Как выполнить поиск по нескольким строкам и шаблонам

Grep-анализ нескольких строк, слов и шаблонов

grep — мощный инструмент командной строки, который позволяет искать в одном или нескольких входных файлах строки, соответствующие регулярному выражению, и записывать каждую совпадающую строку в стандартный вывод.

В этой статье мы покажем вам, как использовать GNU grep для поиска нескольких строк или шаблонов.

Grep множественных шаблонов

GNU grep поддерживает три синтаксиса регулярных выражений: базовый, расширенный и совместимый с Perl. Если тип регулярного выражения не указан, grep интерпретирует шаблоны поиска как базовые регулярные выражения.

Для поиска нескольких шаблонов используйте оператор ИЛИ (чередование).

Оператор чередования | (вертикальная черта) позволяет указать различные возможные соответствия, которые могут быть литеральными строками или наборами выражений. Этот оператор имеет самый низкий приоритет среди всех операторов регулярных выражений.

Синтаксис поиска по нескольким шаблонам с использованием базовых регулярных выражений grep выглядит следующим образом:

 grep 'pattern1|pattern2' file...

Всегда заключайте регулярное выражение в одинарные кавычки, чтобы избежать интерпретации и расширения метасимволов оболочкой.

При использовании базовых регулярных выражений метасимволы интерпретируются как литеральные символы. Чтобы сохранить особое значение метасимволов, их необходимо экранировать обратной косой чертой ( ). Именно поэтому мы экранируем оператор OR ( | ) косой чертой.

Чтобы интерпретировать шаблон как расширенное регулярное выражение, используйте grep с опцией -E (или --extended-regexp ). При использовании расширенного регулярного выражения не экранируйте оператор | :

 grep -E 'pattern1|pattern2' file...

Более подробную информацию о том, как создавать регулярные выражения, можно найти в нашей статье Grep regex .

Grep Несколько строк

Наиболее простыми шаблонами являются буквенные строки.

В следующем примере мы ищем все вхождения слов fatal , error и critical в файле ошибок журнала Nginx :

 grep 'fatal|error|critical' /var/log/nginx/error.log

Если искомая строка содержит пробелы, заключите ее в двойные кавычки.

Вот тот же пример с использованием расширенного регулярного выражения, которое устраняет необходимость экранирования оператора |

 grep -E 'fatal|error|critical' /var/log/nginx/error.log

По умолчанию grep учитывает регистр. Это означает, что заглавные и строчные символы воспринимаются как отдельные.

Чтобы игнорировать регистр при поиске, вызовите grep with опцией -i (или --ignore-case ):

 grep -i 'fatal|error|critical' /var/log/nginx/error.log

При поиске строки grep выведет все строки, где эта строка встроена в более длинные строки. Например, если вы ищете «error», grep также выведет строки, где «error» встроено в более длинные слова, например, «errorless» или «antiterrorists».

Чтобы вернуть только те строки, в которых указанная строка представляет собой целое слово (заключенное в символы, не являющиеся словами), используйте опцию -w (или --word-regexp ):

 grep -w 'fatal|error|critical' /var/log/nginx/error.log

Символы, входящие в слово, включают в себя буквы, цифры (az, AZ и 0-9) и символы подчёркивания (_). Все остальные символы считаются не входящими в слово.

Более подробную информацию о параметрах grep можно найти в нашей статье Команда Grep .

Заключение

Мы показали вам, как использовать grep для поиска по нескольким шаблонам, строкам и словам.

Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.

grep- терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *