Символ []
10.8.2 Символы квадратных скобок []
При использовании .символа ему может соответствовать любой возможный символ. В некоторых случаях вы хотите точно указать, какие символы вы хотите сопоставить, например строчные буквы алфавита или цифры.
Квадратные скобки [ ]соответствуют одному символу из списка или диапазона возможных символов, заключенных в скобки. Например, для profile.txtфайла:
sysadmin@localhost:~/Documents$ cat profile.txt
Hello my name is Joe.
I am 37 years old.
3121991
My favorite food is avocados.
I have 2 dogs.
123456789101112Чтобы найти все строки, в profile.txtкоторых есть числа, используйте шаблон [0123456789]или [0-9]:
sysadmin@localhost:~/Documents$ grep '[0-9]' profile.txt
I am 37 years old.
3121991
I have 2 dogs.
123456789101112Обратите внимание, что каждый возможный символ может быть указан [abcd]или предоставлен в виде диапазона [a-d], если диапазон находится в правильном порядке. Например, [d-a]не будет работать, потому что это недопустимый диапазон:
sysadmin@localhost:~/Documents$ grep '[d-a]' profile.txt
grep: Invalid range endДиапазон определяется стандартом, называемым таблицей ASCII. Эта таблица представляет собой набор всех печатных символов в определенном порядке. Вы можете увидеть таблицу ASCII с помощью asciiкоманды. Небольшой образец:
041 33 21 ! 141 97 61 a
042 34 22 “ 142 98 62 b
043 35 23 # 143 99 63 c
044 36 24 $ 144 100 64 d
045 37 25 % 145 101 65 e
046 38 26 & 146 102 66 fЗначение ASCII буквы aравно 97, а значение dравно 100. Так как 97меньше 100, диапазон a- d( 97- 100) является допустимым диапазоном.
Как насчет исключения символов? Например, для соответствия символу, который может быть любым, кроме x, yили z? Было бы неэффективно предоставлять набор со всеми символами, кроме x, yили z.
Чтобы сопоставить символ, который не является одним из перечисленных символов, начните набор с ^символа. Чтобы найти все строки, содержащие любые нечисловые символы, вставьте a ^в качестве первого символа внутри квадратных скобок. Этот символ отрицает перечисленные символы:
Last updated