Команда grep

17.02.2018

Теги: BashCLILinuxRegExpКомандаШаблон

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

grep [опции] шаблон файл(ы)
команда | grep [опции] шаблон

Рассмотрим несколько примеров использования:

$ cat unix.txt
The Unix operating system was pioneered by Ken
Thompson and Dennis Ritchie at Bell Laboratories
in the late 1960s. One of the primary goals in
the design of the Unix system was to create an
environment that promoted efficient program
development.

Поиск строки «Unix» в файле unix.txt:

$ grep 'Unix' unix.txt
The Unix operating system was pioneered by Ken
the design of the Unix system was to create an
$ cat unix.txt | grep 'Unix'
The Unix operating system was pioneered by Ken
the design of the Unix system was to create an

Поиск строк, содержащих цифры:

$ grep '[0-9]' unix.txt
in the late 1960s. One of the primary goals in
$ cat unix.txt | grep '[0-9]'
in the late 1960s. One of the primary goals in

Опция -i ведет поиск без учета регистра:

$ grep -i 'the' unix.txt
The Unix operating system was pioneered by Ken
in the late 1960s. One of the primary goals in
the design of the Unix system was to create an
$ cat unix.txt | grep -i 'the'
The Unix operating system was pioneered by Ken
in the late 1960s. One of the primary goals in
the design of the Unix system was to create an

Опция -v позволяет найти строки, которые не содержат указанный шаблон:

$ grep -v 'Unix' unix.txt
Thompson and Dennis Ritchie at Bell Laboratories
in the late 1960s. One of the primary goals in
environment that promoted efficient program
development.
$ cat unix.txt | grep -v 'Unix'
Thompson and Dennis Ritchie at Bell Laboratories
in the late 1960s. One of the primary goals in
environment that promoted efficient program
development.

Опция -n выводит номера строк файла, в которых найдено совпадение с шаблоном:

$ grep -n 'Unix' unix.txt
1:The Unix operating system was pioneered by Ken
4:the design of the Unix system was to create an
$ cat unix.txt | grep -n 'Unix'
1:The Unix operating system was pioneered by Ken
4:the design of the Unix system was to create an

Поиск совпадений во всех файлах директории:

$ grep 'шаблон' example/*

Опция -l позволяет получить только список файлов, в которых было найдено совпадение:

$ grep -l 'шаблон' example/*

Опция -L наоборот, позволяет получить список тех файлов, где совпадение не было найдено:

$ grep -L 'шаблон' example/*

Опция -r заставляет grep рекурсивно обследовать все дерево указанной директории, то есть все поддиректории вплоть до файлов:

$ grep -r 'шаблон' /home

Команда grep поддерживает два типа регулярных выражений: базовый (BRE — basic regular expressions) и расширенный (ERE — extended regular expressions). По умолчанию grep использует базовый тип регулярных выражений.

В BRE распознаются следующие метасимволы:

^ $ . [ ] *

Все другие символы расцениваются как литералы. В ERE добавлены следующие метасимволы (и связанные с ними функции):

( ) { } ? + |

Тем не менее, символы «(», «)», «{» и «}» в BRE обрабатываются как метасимволы, если они экранированы обратным слешом; в то время как в ERE постановка перед любыми метасимволами обратного слеша приводит к тому, что они трактуются как литералы.

Опция -E команды grep позволяет использовать расширенные регулярные выражения.

Поиск: Bash • CLI • Linux • RegExp • Команда • Шаблон • grep

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.