Поиск по сайту:

Людей мучают не вещи, а представления о них (Эпиктет).

Grep для нескольких строк и шаблонов2 мин для чтения

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
15 мая 2020
Grep для нескольких строк и шаблонов
Grep это мощный инструмент командной строки, который позволяет вам искать в одном или нескольких входных файлах строки, соответствующие регулярному выражению, и записывать каждую соответствующую строку в стандартный вывод.

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

 

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

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

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

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

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

grep 'pattern1\|pattern2' file...

 

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

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

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

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

 

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

 

Читать  7 инструментов командной строки, которые сделают вашу жизнь проще

При поиске строки 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 ищет несколько шаблонов, строк и слов.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

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

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close