ryg

grep

Синтаксис:

grep [-abcdDEFGHhIiJLlmnOopqRSsUVvwxZ] [-A num] [-B num] [-C[num]] [-e pattern] [-f file]
     [--binary-files=value] [--color[=when]] [--colour[=when]] [--context[=num]] [--label]
     [--line-buffered] [--null] [pattern] [file ...]

Описание:

Утилита grep осуществляет поиск во всех заданных указанных файлах (данных) строк которые соответствуют заданным шаблонам. По умолчанию шаблон совпадает с вводной строкой (параметр pattern), в шаблоне возможно использование регулярных выражений, пустое выражение будет соответствовать любой строке. Строки, которые удовлетворяют условиям отбора, будут выведены в стандартный вывод.
 
Grep использует для сравнения простые шаблоны и регулярные базовые выражения (BRE); egrep может использовать расширенные регулярные выражения (ERE); fgrep работает быстрее, чем grep и egrep, но может обрабатывать только простые шаблоны и не может работать с регулярными выражениями. Подробнее о регулярных выражениях в bash смотреть re_format(7). Шаблоны могут состоять из одной или нескольких строк.
 
Утилиты zgrep, zegrep и zfgrep действуют аналогично соответствующим им grep, egrep и fgrep, но способны работать с сжатыми файлами, упакованными с помощью утилит compress или gzip.
 
Если в параметрах не указан файл с данными file, то в качестве источника будет использован стандартный вход.

Параметры:

-A num --after-context=num  Выводить num строк следующих за строкой совпадающих  с шаблоном. Смотреть также параметры -B и -C.
-a --text  Считать все файлы текстовыми (в формате ASCII). Если файл содержит не ascii символы, то обычно grep просто печатает "Binary file ... matches''. Использование данного параметра принуждает утилиту проводить сравнение с шаблоном и в таких файлах.
-B num --before-context=num  Выводить num строк файла перед строками, совпадающими с шаблоном. Смотреть также параметры -A и -C.
-b --byte-offset  Отображать совпавшие строки со смещением.
-C[num] --context=[num]  Выводить num строк идущих перед и после строки, совпадающей с шаблоном. Если не указывать num, то по умолчанию будет выводиться по две строки, эквивалентно параметрам -A 2 -B 2. Пробелы между символом параметра и числом необязательны.
-c --count  Вывести только количество найденных строк.
   --colour=[when, --color=[when]]  Выделить совпадающий текст цветом, хранящимся в переменной GREP_COLOR. Возможные варианты when: 'never', 'always' или 'auto'.
 -D action --devices=action  Определить действие для устройств, FIFO и sockets. По умолчанию действием будет 'read', что означает их доступность для чтения как файлов. Другие варианты действий (action) это 'skip' - пропустить и 'recurse' - читать рекурсивно, аналогично параметрам -R и -r.
-E --extended-regexp  Интерпретировать шаблон как расширенное регулярное выражение, то есть работать как утилита egrep.
-e pattern --regexp=pattern  Задать шаблон поиска. Данное написание шаблона полезно при поиске по нескольким шаблонам или в случае если искомый текст начинается с тире '-'.
   --exclude  Исключить заданные файлы из поиска. Имеет приоритет над --include.
  --exclude-dir  Если был использован параметр -R, то при рекурсивном поиске каталоги, заданные в данном параметре, будут исключены из поиска. Имеет приоритет на --include-dir.
-F --fixed-strings  Шаблон поиска является простой строкой, утилита работает по алгоритму fgrep.
-f file, --file=file  Считать шаблоны поиска из заданного файла file. Символ новой строки в шаблон поиска не включается.
-G --basic-regexp  Обрабатывать шаблон как простое регулярное выражение, то есть использовать стандартный алгоритм grep.
   Никогда не печатать имя файла вместе с найденной строкой.
-h --no-filename  Всегда печатать имя файла вместе с найденной строкой.
  --help  Вывести подсказку по параметрам утилиты
-I    Игнорировать двоичные файлы. Параметр аналогичен --binary-file=without-match . 
-i --ignore-case  Выполнять сравнения без учета регистра символов. По умолчанию сравнение производится с учетом регистра.
  --include  Если определен, то поиск производится только в файлах имена, которых соответствуют заданному шаблону. Параметр --exclude имеет больший приоритет.
  --include-dir  При использовании с рекурсивным поиском -R поиск будет производиться только в каталогах подходящих к шаблону поиска. Параметр --exclude-dir имеет больший приоритет.
-J --bz2decompress  Распаковывать файлы с помощью bzip2(1) перед поиском.
-L --files-without-match  Выводить только имена файлов, в которых не было найдено соответствий шаблону. Если поиск был из стандартного ввода, будет написано "(standard input)''.
-l --files-with-matches  Будут выведены имена только тех файлов, в которых есть совпадения с шаблоном поиска. Для увеличения производительности поиск внутри файла ведется до первого совпадения. Если поиск был из стандартного ввода, будет написано "(standard input)''.
   --mmap  Использовать функцию mmap(2) вместо read(2) это увеличивает производительность утилиты, но в некоторых случаях может привести к непредсказуемым результатам.
 -m num --max-count=num  Прекратить поиск после num совпадений.
-n --line-number  Перед каждой найденной строкой выводить ее номер относительно начала файла. Нумерация строк идет с 1 и в каждом файле начинается сначала. Параметр игнорируется при использовании параметров -c, -L, -l, или -q.
  --null  Печатать нулевой байт после имени файла.
-O    Если использован параметр -R, то следовать символическим ссылкам, только если они явно указаны в командной строке. По умолчанию grep не обрабатывает символические ссылки.
-o  --only-matching  Печатать только совпадения, а не строки полностью.
-p    Если указан параметр -R, не обрабатывать символические ссылки. Включен по умолчанию.
-q --quiet, --silent  Подавить нормальный вывод, производить поиск до первого совпадения.
-R, -r --recursive  Рекурсивный поиск по дереву каталогов.
-S   Обрабатывать символические ссылки при рекурсивном поиске.
-s --no-messages Игнорировать ошибки, связанные с нечитаемыми и несуществующими файлами и не выводить сообщения о них.
-U --binary Вести поиск в двоичных файлах, но не пытаться их напечатать.
-V --version Вывести информацию о версии и завершить работу.
-v --invert-match Искомые строки это те, которые не соответствуют ни одному из шаблонов.
-w --word-regexp Выражения ищутся как слова как при использовании `[[:<:]]' and `[[:>:]]'; Смотреть re_format(7)
-x --line-regexp Строка должна целиком соответствовать шаблону.
-y   Эквивалентно -i. Устаревший параметр.
-Z, -z --decompress Использовать grep как zgrep.
  --binary-files=value Управление поиском в двоичных файлах. По умолчанию 'default' - искать, но не выводить. Возможны 'without-match' - не искать и 'text' -искать как в текстовых файлах.
  --line-buffered Буферизировать вывод строк. По умолчанию если устройством стандартного вывода является терминал, то вывод буферизируется, во всех остальных случаях буферизация отключена.

Статус завершения команды:

  • 0 - одна или больше строк были найдены
  • 1 - не было найдено ни одной строки
  • >1 возникла ошибка поиска.

Примеры:

Найти строки в файле myfile содержащие 'Патриция':

$ grep 'Патриция' myfile

Найти все входжения шиблона '.Pp' в начале строк (шаблон взят в апострофы, чтобы указать, что обрабатывается grep, а не bash. Символ '^' означает начало строки (пустая строка)):

 $ grep '^\.Pp' myfile

Найти все строки содержащии 'foo' или 'bar': 

$ grep -v -e 'foo' -e 'bar' myfile

Использование расширенных регулярных выращений (искать в календаре числа 12 или 20 или 25):

<$ egrep '19|20|25' calendar

Связанные команды

gzip - архиватор файлов
bzip - архиватор файлов
history - истрия выполненных команд
alias - создать псевдоним команды
look - Вывести строки начинающиеся с заданных символов

Все команды bash в алфавитном порядке