ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

Если вы используете опцию расширенного регулярного выражения -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 /

 

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

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

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

 

Заключение

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

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

Exit mobile version