Исключение в Grep

Bash logo Applications

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

Исключение слов и шаблонов

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

Например, чтобы вывести строки, не содержащие строку nologin, выполните следующие действия:

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

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

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

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

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

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

Следующий пример выводит строки, не содержащие строк nologin или bash:

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

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

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

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

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

Исключение каталогов и файлов

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

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

Вот пример поиска строки linux во всех файлах внутри каталога /etc, исключая каталог /etc/pki:

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

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

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

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

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