Основы программирования в Linux
Шрифт:
Как видите, команда
Вторая очень полезная команда, заслуживающая рассмотрения, — это команда
Команда
Если имена файлов не заданы, команда анализирует стандартный ввод.
Давайте начнем с изучения основных опций команды
Таблица 2.14
| Опция | Описание |
|---|---|
| – с | Вместо вывода на экран совпавших с шаблоном строк выводит их количество |
| – E | Включает расширенные регулярные выражения |
| – h | Ужимает обычное начало каждой строки вывода за счет удаления имени файла, в котором строка найдена |
| – i | Не учитывает регистр букв |
| – l | Перечисляет имена файлов со строками, совпадающими с шаблоном; не выводит сами найденные строки |
| – v | Меняет шаблон соответствия для выбора вместо строк, соответствующих шаблону, несовпадающих с ним строк |
Выполните упражнение 2.17.
Посмотрим команду
Как это работает
В первом примере нет опций; в нем просто ищется строка
Во втором примере в двух разных файлах подсчитывается количество строк, соответствующих шаблону. В этом случае имена файлов выводятся на экран.
В заключение применяется опция
Как вы убедились, основной вариант применения команды grep легко усвоить. Теперь пришло время рассмотреть основы построения регулярных выражений, которые позволят вам выполнять более сложный поиск. Как упоминалось ранее в этой главе, регулярные выражения применяются в системе Linux и многих языках программирования с открытым исходным кодом. Вы можете использовать их в редакторе vi и в скриптах на языке Perl, применяя одни и те же принципы, общие для регулярных выражений, где бы они ни появлялись.
При обработке регулярных выражений определенные символы интерпретируются особым образом. В табл. 2.15 приведены наиболее часто используемые в регулярных выражениях символы.
Таблица 2.15
| Символ | Описание |
|---|---|
| ^ | Привязка к началу строки |
| $ | Привязка к концу строки |
| . | Любой одиночный символ |
| [] | В квадратных скобках содержится диапазон символов, с любым из них возможно совпадение, например, диапазон символов a-e или инвертированный диапазон, перед которым стоит символ ^ |
Если вы хотите использовать любые из перечисленных символов как "обычные", поставьте перед ними символ
Есть также несколько полезных специальных проверочных шаблонов, которые могут указываться в квадратных скобках (табл. 2.16).
Таблица 2.16
| Проверочный шаблон | Описание |
|---|---|
| [:alnum:] | Буквенно-цифровые символы |
| [:alpha:] | Буквы |
| [:ascii:] | Символы таблицы ASCII |
| [:blank:] | Пробел или табуляция |
| [:cntrl:] | Управляющие символы ASCII |
| [:digit:] | Цифры |
| [:graph:] | Неуправляющие и непробельные символы |
| [:lower:] | Строчные буквы |
| [:print:] | Печатные символы |
| [:punct:] | Знаки пунктуации |
| [:space:] | Пробельные символы, включая вертикальную табуляцию |
| [:upper:] | Прописные буквы |
| [:xdigit:] | Шестнадцатиричные цифры |
Кроме того, если задана опция
Таблица 2.17
| Опция | Описание |
|---|---|
| ? | Совпадение не обязательно, но возможно не более одного раза |
| * | Совпадения может не быть, оно может быть однократным или многократным |
| + | Совпадение должно быть однократным или многократным |
| {n} | Совпадение должно быть n раз |
| {n, } | Совпадение должно быть n раз и больше |
| {n, m} | Совпадение должно быть от n до m раз включительно |
Все это выглядит немного запутанно, но если осваивать все возможности постепенно, то вы увидите, что все не так сложно, как кажется на первый взгляд. Самый легкий способ понять регулярные выражения — просто попробовать применить несколько.
1. Начнем с поиска строк, заканчивающихся буквой "е". Возможно, вы уже догадались, что нужно использовать специальный символ
Тринадцатый IX
9. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
сказочная фантастика
рейтинг книги
Магнатъ
4. Александр Агренев
Приключения:
исторические приключения
рейтинг книги
Три `Д` для миллиардера. Свадебный салон
Любовные романы:
современные любовные романы
короткие любовные романы
рейтинг книги
Убийца
3. Совсем не герой
Фантастика:
фэнтези
попаданцы
рейтинг книги
Подросток
Проза:
русская классическая проза
рейтинг книги
Казачий князь
5. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
рейтинг книги
Александр Агренев. Трилогия
Александр Агренев
Фантастика:
альтернативная история
рейтинг книги
Чужак
1. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
рейтинг книги
Кодекс Охотника. Книга XXXIV
34. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Кодекс Охотника XXVIII
28. Кодекс Охотника
Фантастика:
фэнтези
боевая фантастика
попаданцы
рейтинг книги
Полигон
S.T.A.L.K.E.R.
Фантастика:
боевая фантастика
рейтинг книги