Grep это мощный инструмент командной строки, который позволяет вам искать в одном или нескольких входных файлах строки, соответствующие регулярному выражению, и записывать каждую соответствующую строку в стандартный вывод.
В этой статье мы покажем вам, как использовать grep в GNU для поиска нескольких строк или шаблонов.
grep в GNU поддерживает три синтаксиса регулярных выражений: Basic, Extended и Perl-совместимый. Если тип регулярного выражения не указан, grep интерпретирует шаблоны поиска как базовые регулярные выражения.
Для поиска нескольких шаблонов используйте оператор or (чередование).
Оператор чередования |(конвейер) позволяет указывать различные возможные совпадения, которые могут быть литеральными строками или наборами выражений. Этот оператор имеет самый низкий приоритет среди всех операторов регулярных выражений.
Синтаксис для поиска нескольких шаблонов с использованием grep основных регулярных выражений выглядит следующим образом:
grep 'pattern1\|pattern2' file...
Всегда заключайте регулярное выражение в одинарные кавычки, чтобы избежать интерпретации и расширения метасимволов оболочкой.
При использовании основных регулярных выражений метасимволы интерпретируются как буквенные символы. Чтобы сохранить специальные значения метасимволов, их необходимо экранировать обратной косой чертой (\). Вот почему мы избегаем оператора or (|) с косой чертой.
Чтобы интерпретировать шаблон как расширенное регулярное выражение, вызовите команду grep с параметром -E (или –extended-regexp). При использовании расширенного регулярного выражения не экранируйте оператор |:
grep -E 'pattern1|pattern2' file...
Литеральные строки – самые основные образцы.
В следующем примере мы ищем все вхождения слов 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 ищет несколько шаблонов, строк и слов.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Клёво, полезная статья!
Огонь, отдуши
СПАСИБО!!!
клево