Операционная система ЗОСРВ «Нейтрино» > Описание базовых компонентов целевой системы > Утилиты > G > grep



grep

Поиск строк по шаблонам (POSIX)

Синтаксис:

grep [опции] шаблон [файл...] 
grep [-E|-F] [-chilnqsvx] выражение [файл...]

Опции:

-b
--byte-offset
Предваряет каждую строку номером блока, в котором она была найдена.
-c
--count
Записать в стандартный поток вывода только число выбранных строк.
-E
--extended-regexp
Использовать синтаксис расширенных регулярных выражений (extended regular expression; ERE).
-e выражение
--regexp=выражение
Регулярное выражение, тип которого определен в опциях -E, -F. Для определения нескольких выражений можно использовать несколько опций -e.
-F
--fixed-strings
Обработать выражение как фиксированную строку, а не как регулярное выражение. (Выполнить поиск фиксированной строки или строк.)
-G
--basic-regexp
Обработать как базовое регулярное выражение.
-P
--perl-regexp
Обработать как регулярное выражение Perl.
-f файл_выражения
--file=файл_выражения
Файл с набором регулярных выражений, разделенных символом новой строки. Тип выражений определяется опциями -E и -F. Этот формат используется для определения нескольких выражений. Можно указать несколько опций -f.
-h
(расширение ЗОСРВ «Нейтрино» только для grep) Не устанавливать имя файла в качестве префикса для совпадающих строк. Эта опция применяется только при вызове утилиты grep с несколькими файлами, в которых осуществляется поиск.
-i
--ignore-case
Игнорировать при сопоставлении верхний и нижний регистр.
--no-ignore-case
Не игнорировать при сопоставлении верхний и нижний регистр (по умолчанию).
-w
--word-regexp
Ищет выражение как слово.
-l
--files-with-matches
("эль") Записать в стандартный поток вывода только имена файлов с выбранными строками.
-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
--recursive
Эквивалентно –directories=recurse
-R
--dereference-recursive
Эквивалентно –directories=recurse, но с переходом по всем символьным ссылкам.
--include=шаблон
Обработать только файлы, подпадающие под шаблон.
--exclude=шаблон
Пропустить файлы и каталоги, подпадающие под шаблон.
--exclude-from=файл
Пропустить файлы, подпадающие под шаблон из файла.
--exclude-dir=шаблон
Каталоги, подпадающие под шаблон, будут пропущены.
-L
--files-without-match
Показать только имена файлов без выбранных строк.
-T
--initial-tab
Выравнивать с использованием табуляции.
-s
--no-messages
Скрыть сообщения об ошибках, которые обычно выводятся для файлов, которые не существуют или не доступны для чтения. Не скрывать другие сообщения об ошибках.
-v
--invert-match
Выбрать только те строки, которые не совпадают с указанными шаблонами.
-V
--version
Показать версию.
--help
Вывести справку.
-m число_строк
--max-count=число_строк
Остановить вывод после заданного числа строк.
-x
--line-regexp
Считать совпадающими только строки ввода, полностью соответствующие фиксированной строке или регулярному выражению.
-z
--null-data
Заканчивать строку нулевым байтом, а не новой строкой.
-Z
--null
Добавить нулевой байт после имени файла.
-B число
--before-context=число
Показать число строк предшествующего контекста.
-A число
--after-context=число
Показать число строк последующего контекста.
-C число
--context=число
Показать число строк контекста.
-NUM
Эквивалентно –context=число
-U
--binary
Не удалять символы CR в конце строки (MSDOS/Windows).
выражение
Регулярное выражение, тип которого определяется опциями -E и -F. Этот формат используется, если в командной строке указано только одно выражение. Все имена, указанные после этой опции, обрабатываются как входные файлы.
файл
Текстовый входной файл. Значение по умолчанию – стандартный поток ввода.

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

aarch64, arm, armv7, e2k, mips, ppc, x86

Описание:

Утилита grep осуществляет во входных данных поиск строк, совпадающих с данным выражением (данными выражениями). Если строка ввода совпадает с любым из выражений, она считается "выбранной". По умолчанию выбранные строки записываются в стандартный поток вывода.

Разнообразие опций обеспечивает возможность вариаций выходных форматов. Например, для обратного преобразования значения вывода используется опция -v.

Утилита grep распознает три типа регулярных выражений: базовые, расширенные и фиксированные. Если опции -E или -F не указаны, то выражение (или выражения) используется как базовое регулярное выражение.

Базовые и расширенные регулярные выражения аналогичны арифметическим выражениям, в которых крупные выражения формируются путем объединения более мелких выражений и операторов по установленному правилу приоритета.

В регулярных выражениях присутствует "невидимый" оператор, т.е. конкатенация. Конкатенация двух выражений означает сопоставление левой, а затем правой части.

Наименьшим выражением является один символ.

Базовые регулярные выражения

В следующей таблице представлены базовые регулярные выражения и приоритет операторов:

Выражение Значение
\( выражение \) Подвыражение. Сопоставление с шаблоном выражение. Используется для обратных ссылок (см. далее) и приоритета
\N Обратная ссылка. Сопоставление целиком со строкой, созданной подвыражением N.
. (точка) Сопоставление с одним символом.
[набор_символов] Сопоставление с любым компонентом набора набор_символов (см. далее).
c Сопоставление с неспециальным символом.
\c Сопоставление с литералом c. Не допускаются символы (, ), {, } или любые цифры от 1 до 9. Символ \, как правило, используется для экранирования *, $, ^, ., [ и ]. Символы \\ соответствует литералу "\". Для символа \ внутри выражения в прямых скобках специальное значение не определено.
ограниченное_выражение* Сопоставление с любым числом повторений значения ограниченное_выражение, включая нуль.
ограниченное_выражение\{M\} Сопоставление с ровно M повторений значения ограниченное_выражение.
ограниченное_выражение\{,N\} Сопоставление с количеством повторений значения ограниченное_выражение от нуля до N.
ограниченное_выражение\{M,N\} Сопоставление с количеством повторений значения ограниченное_выражение от M до N.
выражение0выражение1 Конкатенация. Сопоставление со значением выражение0, затем с выражение1.
^выражение Сопоставление со значением выражение только в начале строки.
выражение$ Сопоставление со значением выражение только в конце строки.

Ограниченное_выражение ограничено обратной ссылкой, подвыражением или базовым регулярным выражением, соответствующим одному символу.

Набор_символов создается путем конкатенации следующих операторов:

Выражение Значение
c Любой символ c
c-d Любой символ в диапазоне от c до d
[:alpha:] Любой буквенный символ
[:upper:] Любой символ верхнего регистра
[:lower:] Любой символ нижнего регистра
[:digit:] Любой числовой символ
[:alnum:] Любой числовой или буквенный символ
[:xdigit:] Любой символ, используемый для представления числа в шестнадцатеричном формате
[:space:] Любой символ, который является пробельным
[:print:] Любой печатаемый символ
[:punct:] Любой символ пунктуации
[:graph:] Любой символ с графическим представлением
[:cntrl:] Любой управляющий символ

Если набор_символов начинается с символа вставки "^" (^), он инвертируется. Пример:

[^[:alpha:]]

означает сопоставление с любым небуквенным символом. (Также может быть выражен в виде [^a-zA-Z].)

Расширенные регулярные выражения

Расширенные регулярные выражения представляют собой расширенный набор операторов регулярных выражений. В частности, расширенные регулярные выражения поддерживают оператор чередования, что позволяет сопоставить то или иное выражение. Также следует отметить, что синтаксис в скобках отличается от синтаксиса для базовых регулярных выражений, т.е. применяется несколько иная семантика. В расширенных регулярных выражениях отсутствуют обратные ссылки.

Список расширенных регулярных выражений:

Выражение Значение
(выражение) Выполнить сопоставление со значением выражение; целесообразно при изменении приоритета.
. (точка) Сопоставление с одним символом.
c Сопоставление с любым неспециальным символом c.
\c - Сопоставление с литералом c. Как правило, используется для экранирования специальных символов расширенных регулярных выражений.
[набор_символов] Сопоставление с любым элементом набора набор_символов.
ограниченное_выражение* Сопоставление с любым числом, в т.ч. с нулевым, повторений выражения ограниченное_выражение.
ограниченное_выражение+ Сопоставление с числом повторений от 1 и выше выражения ограниченное_выражение.
ограниченное_выражение? ограниченное_выражение не обязательно (сопоставление с числом повторений 0 или 1).
ограниченное_выражение\{M\} Сопоставление с ровно M повторений значения ограниченное_выражение.
ограниченное_выражение\{,N\} Сопоставление с количеством повторений значения ограниченное_выражение от нуля до N.
ограниченное_выражение\{M,N\} Сопоставление с количеством повторений значения ограниченное_выражение от M до N.
выражение0выражение1 Конкатенация. Сопоставление со значением выражение0, затем с выражение1.
выражение0|выражение1 Чередование. Сопоставление с выражением выражение0 или выражение1 (не одновременно).
^выражение Сопоставление со значением выражение только в начале строки.
выражение$ Сопоставление со значением выражение только в конце строки.

Для расширенных регулярных выражений ограниченное_выражение ограничено выражением, соответствующим одному символу или выражению в круглых скобках.

Фиксированные регулярные выражения

Фиксированные регулярные выражения состоят из набора строк символов. В них не допускается использование операторов расширенных или базовых регулярных выражений. Используемый алгоритм чрезвычайно эффективен для поиска одного набора строк в другой строке. Таким образом, если не требуется использовать различные операторы базовых или расширенных регулярных выражений, то оптимальным вариантом являются фиксированные выражения.

Примеры:

Вывод в файл Phone.List строк с телефонными номерами:

grep '[[:digit:]]\{3\}-[[:digit:]]\{4\}' Phone.List

Вывод всех вхождений слов "steve" и "barney" в файл Phone.List:

grep -F -e steve -e barney Phone.List

Возвращаемое значение:

0
Найдены строки, совпадающие с указанным выражением.
>0
Произошла ошибка или совпадающие строки не найдены.

Классификация:

Базовые подсистемы ЗОСРВ «Нейтрино», POSIX

В ЗОСРВ «Нейтрино» редакции 2020 утилита обновлена до версии 3.6 (замена прежней реализации)

Тематические ссылки:

egrep, fgrep, flex, gawk, sed,




Предыдущий раздел: Утилиты