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

Grep Исключить

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 linuxize:x:1000:1000:linuxize:/home/linuxize:/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 . Путь к исключенному каталогу указывается относительно каталога поиска.

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

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

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

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

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

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

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

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

Заключение

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

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

grep- терминал

Связанные руководства

Источник

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

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