Поиск по сайту:
Никогда не следует думать, будто ты понимаешь, что делаешь (Авессалом Подводный).

Как исключить в Grep

31.05.2021
Команда Pgrep в Linux

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

В этой статье мы покажем вам, как исключить одно или несколько слов, шаблонов или каталогов при поиске с помощью grep.

 

Исключить слова и шаблоны

Чтобы отображать только те строки, которые не соответствуют поисковому шаблону, используйте параметр -v (или –invert-match).

Например, чтобы напечатать строки, которые не содержат строку, nologinвы должны использовать:

grep -wv nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash
git:x:994:994:git daemon user:/:/usr/bin/git-shell
andreyex:x:1000:1000:andreyex:/home/andreyex:/bin/bash

 

Опция -w говорит grepвернуть только те строки, где указанная строка представляет собой целое слово (заключенные символы без слов).

По умолчанию учитывается регистр grep. Это означает, что символы верхнего и нижнего регистра рассматриваются как разные. Чтобы игнорировать регистр при поиске, вызовите grep с опцией -i.

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

Чтобы указать два или более шаблонов поиска, используйте опцию -e:

grep -wv -e nologin -e bash /etc/passwd

 

Вы можете использовать опцию -e сколько угодно раз.

Другой вариант исключения нескольких шаблонов поиска – объединение шаблонов с помощью оператора ИЛИ |.

В следующем примере печатаются строки, не содержащие строк nologin или bash:

grep -wv 'nologin\|bash' /etc/passwd

 

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

Читать  Как вы перечисляете все пакеты в Linux Mint

Если вы используете опцию расширенного регулярного выражения -E, то оператор | не следует экранировать, как показано ниже:

grep -Ewv 'nologin|bash' /etc/passwd

 

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

grep -v "^games" file.txt

 

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

Например, чтобы распечатать все запущенные процессы в вашей системе, кроме тех, которые выполняются от имени пользователя «root», вы можете отфильтровать вывод команды ps:

ps -ef | grep -wv root

 

Исключить каталоги и файлы

Иногда при выполнении рекурсивного поиска с опциями -r или -R вы можете захотеть исключить определенные каталоги из результатов поиска.

Основное различие между параметрами -r или -R заключается в том, что когда grep вызывается с прописными буквами, Rон будет следовать всем символическим ссылкам.

Чтобы исключить каталог из поиска, воспользуйтесь опцией –exclude-dir. Путь к исключенному каталогу относительно каталога поиска.

Вот пример, показывающий, как искать строку andreyex во всех файлах внутри /etc, за исключением каталога /etc/pki:

grep -R --exclude-dir=pki andreyex /etc

 

Чтобы исключить несколько каталогов, заключите исключенные каталоги в фигурные скобки и разделите их запятыми без пробелов.

Например, чтобы найти файлы , которые содержат строку «gnu» в вашей системе Linux исключая proc, bootи sysкаталоги , которые вы бы запустить:

grep -r --exclude-dir={proc,boot,sys} gnu /

 

Читать  Что такое директива в Vue и как ее использовать?

При использовании сопоставления с подстановочными знаками вы можете исключить файлы, базовое имя которых совпадает с GLOB, указанным в опции –exclude.

В приведенном ниже примере мы ищем строку во всех файлах в текущем рабочем каталоге, за исключением файлов andreyex, оканчивающихся на .pngи .jpg:

grep -rl --exclude=*.{png,jpg} andreyex *

 

Заключение

Команда grepпозволяет исключить шаблоны и каталоги при поиске файлов.

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

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Михаил

Как заставить вывести строки, содержащие одно, но одновременно не содержащие другое слово?
Например, из лога вывеси все строки, содержащие err и wrn, но пропускать строки с “wrn … xxx” и “err … yyy”. Нужно одной командой, через регулярные выражения. grep wrn | grep -v xxx не подойдёт для zabbix

Это может быть вам интересно


Рекомендуемое
Вступление Анонс нового iPhone в этом году принес нам не…

Спасибо!

Теперь редакторы в курсе.