Как найти несколько строк и шаблонов с помощью Grep

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

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

Grep несколько шаблонов

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

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

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

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

grep 'pattern1|pattern2' file...

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

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

Чтобы интерпретировать шаблон как расширенное регулярное выражение, вызовите 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 для поиска нескольких шаблонов, строк и слов.

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

Оставьте комментарий