Вход в grep

grep — одна из самых полезных команд UNIX; это значительно упрощает задачу поиска. Я подумал о том, чтобы собрать свои знания об этой команде в одном месте, чтобы стать руководством по переходу для всех, кто только начинает работать с командами терминала. В этом уроке я подробно расскажу о различных вариантах и ​​вариантах использования grep.

Я буду использовать для этого пример файла журнала и продемонстрирую возможности поиска grep.

1. grep ‹текст› ‹файл›

Grep по умолчанию чувствителен к регистру и возвращает всю строку, содержащую соответствующий текст.

grep "RSVP" sampleLogFile.log

2. выбрать только совпадение

-o используется для получения только совпадающей части, а не всей строки

grep -o "RSVP" sampleLogFile.log

3. игнорировать регистр

Вы можете попросить grep игнорировать регистр, указав опцию -i.

grep -i “RSVP” sampleLogFile.log

4. инвертировать совпадение

-v можно использовать для получения всего, что не соответствует искомому тексту.

grep -v “RSVP” sampleLogFile.log

5. сопоставление регулярных выражений

Что, если вы хотите получить все IP-адреса или выполнить поиск с помощью регулярного выражения? grep также поддерживает это с опцией -E!

grep -E “[0–9]+\.[0–9]+\.[0–9]+\.[0–9]+” sampleLogFile.log

игнорируйте неуклюжее регулярное выражение IP 😅

6. считать

Хотя grep предоставляет способ подсчета вхождений текста (ну, не совсем так!), grep возвращает количество строк, содержащих текст. Итак, если ваш поисковый текст присутствует несколько раз в строке, grep не будет вашим самым большим союзником. Не волнуйтесь, у меня есть идеальное решение для этого.

grep -oc “RSVP” sampleLogFile.log

это возвращает количество строк, содержащих текст «RSVP»

grep -o “RSVP” sampleLogFile.log | wc -l

это возвращает фактическое количество текста «RSVP» в файле.

7. Имя выходного файла, содержащее искомый текст

Команда -l выдает имена файлов с соответствующим текстом вместо обычного вывода текста.

grep -l “RSVP” sampleLogFile.log

Последний пример использования, прежде чем мы закроем это руководство, что, если вам нужны строки с текстом «RSVP», а также IP-адрес? Вы можете запустить grep для результата grep. Позвольте мне показать вам, как это сделать.

grep -i “RSVP” sampleLogFile.log | grep -E “([0–9]+\.){3}[0–9]+”

Здесь я извлекаю строки, считающие текст «RSVP», а затем проверяю строки с IP-адресом в них. Такое добавление можно сделать n- число раз.

Спасибо за чтение.