<Предыдущая | Содержание: | Следующая>
Традиционные диапазоны символов
Если бы мы хотели построить регулярное выражение, которое бы находило каждый файл в наших списках, начинающийся с заглавной буквы, мы могли бы сделать это:
[я @ linuxbox ~] $ grep -h '^ [ABCDEFGHIJKLMNOPQRSTUVWXZY]' dirlist * .txt
[я @ linuxbox ~] $ grep -h '^ [ABCDEFGHIJKLMNOPQRSTUVWXZY]' dirlist * .txt
Просто нужно поместить все 26 заглавных букв в выражение в квадратных скобках. Но сама идея набора текста вызывает глубокое беспокойство, поэтому есть другой способ:
[я @ linuxbox ~] $ grep -h '^ [AZ]' dirlist * .txt
МАКЕДЕВ
ПОЛУЧИТЬ
ГОЛОВНОЙ СТОЛ X X11
Xorg
NetworkManager NetworkManagerДиспетчер
[я @ linuxbox ~] $ grep -h '^ [AZ]' dirlist * .txt
МАКЕДЕВ
ПОЛУЧИТЬ
ГОЛОВНОЙ СТОЛ X X11
Xorg
NetworkManager NetworkManagerДиспетчер
Используя диапазон из трех символов, мы можем сократить 26 букв. Любой диапазон символов -
Термины могут быть выражены таким образом, включая несколько диапазонов, например это выражение, которое соответствует всем именам файлов, начинающимся с букв и цифр:
[я @ linuxbox ~] $ grep -h '^ [A-Za-z0-9]' dirlist * .txt
[я @ linuxbox ~] $ grep -h '^ [A-Za-z0-9]' dirlist * .txt
В диапазонах символов мы видим, что символ тире обрабатывается особым образом, так как же нам на самом деле включить символ тире в выражение в скобках? Сделав его первым символом в выражении. Рассмотрим эти два примера:
[я @ linuxbox ~] $ grep -h '[AZ]' dirlist * .txt
[я @ linuxbox ~] $ grep -h '[AZ]' dirlist * .txt
Это будет соответствовать каждому имени файла, содержащему заглавную букву. В то время как:
[я @ linuxbox ~] $ grep -h '[-AZ]' dirlist * .txt
[я @ linuxbox ~] $ grep -h '[-AZ]' dirlist * .txt
будет соответствовать каждому имени файла, содержащему тире, прописную букву «A» или заглавную букву «Z».