Команда grep в Linux

Команда grep возвращает строки из файла попадающие под определенное условие. Для примера возьмем файл со случайным списком местopen in new window и применим к нему grep. В простейшем случае нужно в grep нужно передать шаблон для поиска и имя файла, программа вернет все строки файла в которых шаблон является подстрокой.

user@debian-server:~/test$ grep ozo file.txt 
Bozoo
Carrizozo
1
2
3

Вместо имени файла данные можно передать через stdin.

user@debian-server:~/test$ cat file.txt | grep ozo
Bozoo
Carrizozo
1
2
3

По умолчанию поиск регистрозависимый, для регистронезависимого поиска применяется параметр -i.

user@debian-server:~/test$ grep -i ozo file.txt 
Bozoo
Carrizozo
Ozona
1
2
3
4

С помощью параметра -e можно передать несколько шаблонов.

user@debian-server:~/test$ grep -e ozo -e roz file.txt 
Bozoo
Carrizozo
Corozal
Crozet
Crozier
1
2
3
4
5
6

По умолчанию grep выдает строку, при любом совпадении с шаблоном, с параметром -w строка будет выведена только если шаблон присутствует в ней в виде отдельного файла.

user@debian-server:~/test$ grep -i Aguila file.txt 
Aguila
Aguilar
user@debian-server:~/test$ grep -iw Aguila file.txt 
Aguila
1
2
3
4
5

Параметр -x заставит grep выдавать строку если она полностью совпадает с шаблонов. Так как в файле примере каждая строка состоит из одного слова, то результат совпадает с -w.

user@debian-server:~/test$ grep -ix Aguila file.txt 
Aguila
1
2

С параметром -c команда выведет только количество найденных строк.

user@debian-server:~/test$ grep -c ozo file.txt 
2
1
2

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

user@debian-server:~/test$ grep -cv ozo file.txt 
10194
user@debian-server:~/test$ wc -l file.txt 
10196 file.txt
1
2
3
4

У команды grep много других параметров, например, она может выводить номера строк и имена файлов.

user@debian-server:~/test$ grep -n ozo file.txt 
1035:Bozoo
1494:Carrizozo
user@debian-server:~/test$ grep -H ozo file.txt 
file.txt:Bozoo
file.txt:Carrizozo
1
2
3
4
5
6

Параметр -E позволяет применять в поиске регулярные выражения.

user@debian-server:~/test$ grep -E '^A..(nd|st)' file.txt 
Acosta
Amanda
Amistad
Arendtsville
Aristes
Aviston
Avondale
Awendaw
1
2
3
4
5
6
7
8
9

Ссылки

Последниее изменение: 06.12.2023, 18:47:05