Инструменты пользователя

Инструменты сайта


grep

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

grep [2018/09/02 04:05] (текущий)
Строка 1: Строка 1:
 +====== GNU grep ======
  
 +{{ ::​difference-between-grep-egrep-and-fgrep-in-linux.png?​600 |}}
 +
 +grep расшифровывается как ‘global regular expression printer‘. grep отрезает нужные вам строки из текстовых файлов которые содержат указанный пользователем текст.
 +
 +grep может быть использован двумя путями — сам по себе или в комбинации с потоками.
 +
 +grep очень обширен в функциональности,​ за счет большого количества поддерживаемых им опций, таких как: поиск с использованием строкового шаблона или [[RegExp]] регулярных выражений шаблон или perl based регулярных выражений ​ и т.д.
 +
 +Из-за его различных функциональных возможностей инструмент grep имеет множество вариантов,​ включая **egrep (Extended GREP)**, **fgrep (Fixed GREP)**, **pgrep (Process GREP)**, **rgrep (рекурсивный GREP)** и т.д. Но эти варианты имеют незначительные отличия от оригинального grep.
 +
 +===== Параметры grep =====
 +
 +<​file>​
 +$ grep -V
 +grep (GNU grep) 2.10
 +Copyright (C) 2011 Free Software Foundation, Inc.
 +Лицензия GPLv3+
 +</​file>​
 +Существуют модификации утилиты grep: egrep (с обработкой расширенных регулярных выражений),​ fgrep (трактующая символы $*[]^|()\ как литералы,​ т.е. буквально),​ rgrep (с включённым рекурсивным поиском).
 +  * egrep то же самое что grep -E
 +  * fgrep то же самое что grep -F
 +  * rgrep то же самое что grep -r
 +
 +
 +  * grep  [-b] [-c] [-i] [-l] [-n] [-s] [-v] ограниченное_регулярное_выражение_BRE [файл ...]
 +
 +Команда grep сопоставляет строки исходных файлов с шаблоном,​ заданным ограниченным_регулярным_выражением. Если файлы не указаны,​ используется стандартный ввод. Обычно каждая успешно сопоставленная строка копируется на стандартный вывод; если исходных файлов несколько,​ перед найденной строкой выдается имя файла. В grep используется компактный недетерминированный алгоритм. В качестве шаблонов воспринимаются ограниченные регулярные выражения (выражения,​ имеющие своими значениями цепочки символов,​ и использующие ограниченный набор алфавитно-цифровых и специальных символов). Они имеют тот же смысл, что и регулярные выражения в ed.
 +
 +Для экранирования символов $, *, [ ], ^, |, ( ), и \ от интерпретации shell'​ом проще всего заключать ограниченное_регулярное_выражение в одинарные кавычки.
 +
 +**Опции:​**
 +
 +<​file>​
 +-b Предваряет каждую строку номером блока, в котором она была найдена. Это может пригодиться при поиске блоков по контексту (блоки нумеруются с 0).
 +-c Выдает только количество строк, содержащих образец.
 +-h Предотвращает выдачу имени файла, содержащего сопоставившуюся строку,​ перед собственно строкой. Используется при поиске по нескольким файлам.
 +-i Игнорирует регистр символов при сравнениях.
 +-l Выдает только имена файлов,​ содержащих сопоставившиеся строки,​ по одному в строке. Если образец найден в нескольких строках файла, имя файла не повторяется.
 +-n Выдает перед каждой строкой ее номер в файле (строки нумеруются с 1).
 +-s Подавляет выдачу сообщений о не существующих или недоступных для чтения файлах.
 +-v Выдает все строки,​ за исключением содержащих образец.
 +-w Ищет выражение как слово, как если бы оно было окружено метасимволами \< и \>.
 +</​file>​
 +
 +====== grep --help ======
 +<​file>​
 +Использование:​ 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 ​               для обратной совместимости,​ игнорируется
 +
 +Управление выводом:​
 +  -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[=ЧИС] ​      ​печатать ЧИСЛО строк контекста
 +  -ЧИСЛО ​                   то же, что и --context=ЧИСЛО
 +      --color[=КОГДА],​
 +      --colour[=КОГДА] ​     использовать маркеры для различия совпадающих
 +                            строк; КОГДА может быть always (всегда),​
 +                            never (никогда) или auto (автоматически)
 +  -U, --binary ​             не удалять символы CR в конце строки (MSDOS)
 +  -u, --unix-byte-offsets ​  ​выдавать смещение,​ как-будто нет CR-ов (MSDOS)
 +
 +Вместо «egrep» предполагается запуск «grep -E». Вместо «fgrep» предполагается
 +«grep -F». Запуск под именами «egrep» или «fgrep» лучше не выполнять.
 +Когда не задан ФАЙЛ, или когда ФАЙЛ это -, то читается стандартный ввод.
 +Если указано меньше,​ чем два файла, то предполагает -h. При нахождении
 +совпадений кодом завершения программы будет 0, и 1, если нет.При возникновении
 +ошибок,​ или если не указан параметр -q, кодом завершения будет 2.
 +
 +Об ошибках сообщайте по адресу <​bug-grep@gnu.org>​
 +Об ошибках в переводе сообщайте по адресу <​gnu@mx.ru>​
 +Домашняя страница GNU Grep: <​http://​www.gnu.org/​software/​grep/>​
 +Справка по работе с программами GNU: <​http://​www.gnu.org/​gethelp/>​
 +</​file>​
 +====== (e)grep примеры ​ ======
 +  * Рекурсивно ищет слово expat во всех файлах каталога home<​code bash>
 +$ grep -R expat /​home/</​code>​
 +  * Ищет во всех файлах каталога регулярное выражение<​file bash egrep.bash>​
 +DIRMail="/​home/​vmail/​cur"​
 +
 +/bin/egrep -h -e ' IP .*[[:​digit:​]]{1,​3}\.[[:​digit:​]]{1,​3}\.[[:​digit:​]]{1,​3}\.[[:​digit:​]]{1,​3}'​ \
 + ​$DIRMail/​* |  awk '​{print $4}'
 +</​file>​
 +  * Чтобы вывести несколько строк до и после найденного вхождения,​ нужно использовать параметры grep -B и -A, например в файле созданном [[tshark]]<​file bash>
 +$ tail -f /​root/​tshark_401_Unauthorized.pcap | grep Unauthorized -B 1 -A 2
 +</​file>​
grep.txt · Последние изменения: 2018/09/02 04:05 (внешнее изменение)