Поиск текста по фрагменту из текста. (grep/egrep)

Примеры

$ grep --color=always -C 2 -R "My search text" ./
$ grep -B 3 -A 5 -i "My search text"
$ cat /etc/squid3/squid.conf | grep "^[^#;]"

Описание

Легендарная команда grep может служить практически для любых целей. Я ее люблю применять не только для поиска нужных файлов в каталоге исходного текста. С помощью grep также можно задавать поиск по регулярным выражениям. Прототип команды: grep 'шаблон поиска' файл_в_котором_искать Пример:

grep -R 'text' /

-команда будет рекурсивно искать во всех текстовых файлах системы слово text. Grep имеет внушительное количество опций которые могут довольно часто понадобиться:

$ grep --help

Использование: grep [КЛЮЧ]… ШАБЛОН [ФАЙЛ]… Поиск ШАБЛОНА в каждом ФАЙЛЕ или в стандартном вводе. По умолчанию, ШАБЛОН представляет собой простое регулярное выражение (BRE). Пример: grep -i 'hello world' menu.h main.c

Выбор типа регулярного выражения и его интерпретация:

-E, –extended-regexp ШАБЛОН - расширенное регулярное выражение (ERE)

-F, –fixed-regexp ШАБЛОН - строки фиксированной длины, разделённые символом новой строки

-G, –basic-regexp ШАБЛОН - простое регулярное выражение (BRE)

-P, –perl-regexp ШАБЛОН - регулярное выражения языка Perl

-e, –regexp=ШАБЛОН использовать ШАБЛОН для поиска

-f, –file=ФАЙЛ брать ШАБЛОН из ФАЙЛа

-i, –ignore-case игнорировать различие регистра

-w, –word-regexp ШАБЛОН должен подходить ко всем словам

-x, –line-regexp ШАБЛОН должен подходить ко всей строке

-z, –null-data строки разделяются байтом с нулевым значением, а не символом конца строки

Дополнительно:

-s, –no-messages подавлять сообщения об ошибках

-v, –revert-match выбирать не подходящие строки

-V, –version вывести информацию о версии и выйти

–help показать помощь и выйти

–mmap использовать отображение в память (mmap) по возможности

Управление выводом:

-m, –max-count=ЧИСЛО остановиться после указанного ЧИСЛА совпадений

-b, –byte-offset печатать вместе с выходными строками смещение в байтах

-n, –line-number печатать номер строки вместе с выходными строками

–line-buffered сбрасывать буфер после каждой строки

-H, –with-filename печатать имя файла для каждого совпадения

-h, –no-filename не начинать вывод с имени файла

–label=МЕТКА выводить МЕТКУ в качестве имени файла для стандартного ввода

-o, –only-matching показывать только часть строки, совпадающей с ШАБЛОНОМ

-q, –quiet, –silent подавить весь обычный вывод

–binary-files=ТИП считать, что двоичный файл ТИПА:

binary, text или without-match.

-a, –text то же что и –binary-files=text

-I то же, что и –binary-files=without-match

-d, –directories=ДЕЙСТВ как обрабатывать каталоги

ДЕЙСТВИЕ может быть read (читать), recurse (рекурсивно), или skip (пропускать).

-D, –devices=ДЕЙСТВ как обрабатывать устройства, FIFO и сокеты

ДЕЙСТВИЕ может быть 'read' или 'skip'

-R, -r, –recursive то же, что и –directories=recurse

–include=Ф_ШАБЛОН обработать только файлы, подпадающие под Ф_ШАБЛОН

–exclude=Ф_ШАБЛОН пропустить файлы и каталоги,

подпадающие под Ф_ШАБЛОН

–exclude-from=ФАЙЛ пропустить файлы, подпадающие под шаблон

файлов из ФАЙЛА

–exclude-dir=ШАБЛОН каталоги, подпадающие под ШАБЛОН,

будут пропущены

-L, –files-without-match печатать только имена ФАЙЛОВ без совпадений

-l, –files-with-matches печатать только имена ФАЙЛОВ с совпадениями

-c, –count печатать только количество совпадающих

строк на ФАЙЛ

-T, –initial-tab выравнивать табуляцией (если нужно)

-Z, –null печатать байт 0 после имени ФАЙЛА

Управление контекстом:

-B, –before-context=ЧИС печатать ЧИСЛО строк предшествующего контекста

-A, –after-context=ЧИС печатать ЧИСЛО строк последующего контекста

-C, –context[=ЧИС] печатать ЧИСЛО строк контекста,

–color[=КОГДА],

–colour[=КОГДА] использовать маркеры для различия совпадающих строк; КОГДА может быть always (всегда), never (никогда), или auto (автоматически)

–color, –colour использовать маркеры для различия совпадающих строк

-U, –binary не удалять символы CR в конце строки (MSDOS)

-u, –unix-byte-offsets выдавать смещение, как-будто нет CR-ов (MSDOS)

Вместо egrep предполагается запуск grep -E. Вместо fgrep предполагается grep -F. Запуск под именами egrep или fgrep лучше не выполнять. Когда не задан ФАЙЛ, или когда ФАЙЛ это -, то читается стандартный ввод. Если указано меньше, чем два файла, то предполагает -h. При нахождении совпадений кодом завершения программы будет 0, и 1, если нет.При возникновении ошибок, или если не указан параметр -q, кодом завершения будет 2.