Утилита командной строки Linux grep даёт возможность найти текст в указанном файле. Можно также передать вывод любой команды в grep, что значительно упрощает поиск.
 
  
Содержание
Синопсис
grep [ПАРАМЕТР]… ШАБЛОНЫ [ФАЙЛ]…
Поиск шаблонов в каждом файле.
Пример:
grep -i 'hello world' menu.h main.c
Шаблонов можно указать несколько, разделяя их символом новой строки.
Опции
Шаблон выбора и его интерпретация:
- -E
- шаблоны — расширенные регулярные выражения
- -F
- шаблоны — строки
- -G
- шаблоны — простые регулярные выражения
- -e
- использовать шаблоны для поиска
- -f
- брать шаблоны из файла
- -i
- игнорировать различие регистра
- -w
- совпадение обязательно с целым словом
- -x
- совпадение обязательно с целой строкой
- -z
- строки разделяются байтом с нулевым значением, а не символом конца строки
- -s
- не показывать сообщения об ошибках
- -v
- выбирать не подходящие строки
- -V
- показать информацию о версии и закончить работу
- --help
- показать эту справку и закончить работу
- -m
- остановиться после указанного числа совпавших строк
- -b
- печатать вместе с выходными строками смещение в байтах
- -n
- печатать номер строки вместе с выходными строками
- -H
- печатать имя файла для каждой выводимой строки
- -h
- не начинать вывод с имени файла
- -o
- показывать только совпавшие непустые части строк
- -q
- подавлять весь обычный вывод
- -r
- то же, что и --directories=recurse
- -R
- тоже, но с переходом по всем символьным ссылкам
- -L
- печатать только имена файлов без выбранных строк
- -l
- печатать только имена файлов с выбранными строками
- -c
- печатать только количество выбранных строк на файл
- -T
- выравнивать табуляцией (если нужно)
- --color[=КОГДА]
- использовать маркеры для различия совпадающих строк; когда может быть «always» (всегда), «never» (никогда) или «auto» (автоматически)
Если в качестве файла указан символ -, то читается стандартный ввод. Если файл не указан, то читается текущий каталог .  и - в противномслучае. Если указано менее двух файлов, то предполагается -h. При нахождении совпадений любой строки кодом завершения будет 0 и 1, если ничего не совпало. При возникновении ошибок и если не указан параметр -q, кодом завершения будет 2.
Примеры использования
Передача вывода ls в grep
Уже описаннная и очень популярная команда ls выводит список файлов и каталогов
oleg@mobile:~:$ ls
abc.txt       build/    Documents/        FreeShip-3.5.2.45_x86-64/  photo/         slimthemes/  webprojects/  www/          Документы/
aur/          cache/    Downloads/        GNUstep/                   recode/        Slovoeb/     webupload/    xep/          Загрузки/
backgrounds/  Desktop/  EtxtAntiplagiat/  Mail/                      Sape/          store/       wifi/         XEP/
bin/          docs/     FreeShip/         mailbox/                   skype-export/  tmp/         work/         Yandex.Disk/
oleg@mobile:~:$ 
При поиске определённого каталога или файла можно передать вывод команды ls в grep через вертикальную черту |, передав при этом grep необходимое слово.
oleg@mobile:~:$ ls ~/webprojects/linuxcookbook.ru/img/ | grep linux-grep-command.png
linux-grep-command.png
oleg@mobile:~:$ 
При отсутствии этого слова команда grep ничего не возвращает.
При поиске не одного слова, а словосочетания или предложения, параметр команды выделяется одинарными или двойными кавычками.
leg@mobile:~:$ ls ~/Документы/ | grep 'My Drawings'
My Drawings/
oleg@mobile:~:$ 
Команду grep можно, конечно, использовать самостоятельно.
Поиск слова в текстовом файле
Для поиска слова в текстовом файле достаточно ввести команду:
$ grep ШАБЛОН [файл]
где
- запрос
- слово, которое необходимо найти
- файл
- файл, в котором выполняется поиск слова
oleg@mobile:~/www/backuplinode:$ grep max_connections my.cnf
max_connections = 30
oleg@mobile:~/www/backuplinode:$
Поиск по нескольким параметрам
Команда grep может осуществлять поиск по нескольким параметрам. Для этого перед каждым аргументом указывается ключ -e. Команда выводит в этом случае все вхождения указанных слов.
oleg@mobile:~/www/backuplinode:$ grep -e max_connections -e innodb_buffer_pool_size my.cnf 
max_connections = 30
innodb_buffer_pool_size = 512M
oleg@mobile:~/www/backuplinode:$ 
Рекурсивный поиск
В этом случае команда grep запускается с ключом -r. Команда выведет все файлы, где найдено совпадение с указанным шаблоном, а также путь к ним. По умолчанию поиск ведется по текущей директории и поддиректориях.
oleg@mobile:~:$ grep -r linux-grep-command.png webprojects/linuxcookbook.ru/
webprojects/linuxcookbook.ru/articles/grep:oleg@mobile:~:$ ls ~/webprojects/linuxcookbook.ru/img/ | grep linux-grep-command.png
webprojects/linuxcookbook.ru/articles/grep:linux-grep-command.png
oleg@mobile:~:$ 
Частота появления слова в тексте
Для этого используется опция -c:
oleg@mobile:~:$ grep -r -c Linux webprojects/linuxcookbook.ru/articles/komanda-ls-linux 
15
oleg@mobile:~:$
Доступ к системной информации
Определение модели компьютера:
ocat /proc/cpuinfo | grep -i 'Model'grep -i 'Model'
model        : 42
model name    : Intel(R) Pentium(R) CPU B950 @ 2.10GHz
model        : 42
model name    : Intel(R) Pentium(R) CPU B950 @ 2.10GHz
oleg@mobile:~:$ 
Заключение
При работе с большим количеством текстовых файлов команда grep чрезвычайно полезна. Эта простая универсальная утилита имеет множество полезных функций. Даже начинающие пользователи Linux быстро понимают то, что она значительно повышает производительность труда.