GREP(1)

НАИМЕНОВАНИЕ
grep, egrep, fgrep, rgrep — вывести строки, соответствующие шаблонам

СИНТАКСИС
grep [OPTION]... PATTERNS [FILE]...
grep [OPTION]... -e PATTERNS ... [FILE]...
grep [OPTION]... -f PATTERN_FILE ... [FILE]...

ОПИСАНИЕ
grep searches for patterns in each FILE. In the synopsis's first form, which is used if no -e or -f options are present, the first operand PATTERNS is one or more patterns separated by newline characters, and grep prints each line that matches a pattern. Typically PATTERNS should be quoted when grep is used in a shell command.

Если ФАЙЛ задан как «-», под ним подразумевается стандартный поток ввода. Если ФАЙЛ не задан, то в случае рекурсивного поиска будет выполнен анализ рабочего каталога, а в случае нерекурсивного поиска будет выполнено чтение из стандартного потока ввода.

Debian также включает в себя альтернативные программы egrep, fgrep и rgrep. Эти программы выполняют те же функции, что и grep -E, grep -F и grep -r соответственно. Они не рекомендованы к использованию разработчиками исходного проекта, однако Debian поставляет их в целях обратной совместимости. Для обеспечения переносимости рекомендуется избегать использования этих альтернативных программ и использовать вместо них grep с соответствующим параметром.

ОПЦИИ

  Общая информация о программе

--help
    Вывести информацию об использовании программы и завершить работу.

-V, --version
    Вывести номер версии grep и завершить работу.

  Синтаксис шаблонов

-E, --extended-regexp
    Воспринимать ШАБЛОНЫ как расширенные регулярные выражения (EREs — extended regular expressions, см. ниже).

-F, --fixed-strings
    Воспринимать ШАБЛОНЫ как фиксированные строки, а не регулярные выражения.

-G, --basic-regexp
    Воспринимать ШАБЛОНЫ как простые регулярные выражения (BREs — basic regular expressions, см. ниже). Данный параметр используется по умолчанию.

-P, --perl-regexp
    Воспринимать ШАБЛОНЫ как регулярные выражения, совместимые с Perl (PCREs — Perl-compatible regular expressions). Данный параметр является экспериментальным, если используется в сочетании с параметром -z (--null-data); grep -P может выводить предупреждения о возможностях, которые не были реализованы.

  Настройки поиска соответствий

-e ШАБЛОНЫ, --regexp=ШАБЛОНЫ
    Использовать ШАБЛОНЫ в качестве шаблонов. Если данный параметр указан несколько раз или в сочетании с параметром -f (--file), выполнять поиск для всех перечисленных шаблонов. Данный параметр может быть использован для корректной обработки шаблонов, начинающихся с «-».

-f ФАЙЛ, --file=ФАЙЛ
    Считать шаблоны из ФАЙЛа, по одному на каждую строку. Если данный параметр указан несколько раз или в сочетании с параметром -e (--regexp), выполнять поиск для всех перечисленных шаблонов. Пустой файл содержит нулевое количество шаблонов и, таким образом, не приводит к нахождению соответствий. Если ФАЙЛ задан как -, считать шаблоны из стандартного потока ввода.

-i, --ignore-case
    Игнорировать различия в регистре в шаблонах и входных данных, чтобы символы, отличающиеся только регистром, считались совпадающими.

--no-ignore-case
    Не игнорировать различия в регистре в шаблонах и входных данных. Такое поведение используется по умолчанию. Данный параметр удобен для передачи сценариям оболочки, которые уже используют параметр -i, чтобы отменить действие последнего, так как эти два параметра переопределяют друг друга.

-v, --invert-match
    Изменить логику поиска соответствий на обратную, выбирая несоответствующие строки.

-w, --word-regexp
    Выбирать только те строки, в которых найденные соответствия образуют целые слова. Проверка заключается в том, что совпавшая подстрока должна либо находиться в начале строки, либо следовать за символом, не являющимся частью слова. Аналогичным образом, эта подстрока должна либо находиться в конце строки, либо предшествовать символу, не являющемуся частью слова. Символами, которые считаются частью слов, являются буквы, цифры и символ подчёркивания. Данный параметр не действует, если был также указан параметр -x.

-x, --line-regexp
    Выбирать только те совпадения, которые в точности соответствуют строке целиком. При использовании шаблона с регулярным выражением действие данного параметра равнозначно заключению шаблона в круглые скобки, а затем — в символы ^ и $.

  Общие настройки вывода

-c, --count
    Подавлять обычно выводимую информацию; вместо неё выводить для каждого входного файла количество строк, в которых были обнаружены соответствия. При использовании параметра -v, --invert-match (см. выше) подсчитывать строки без соответствий.

--color[=КОГДА], --colour[=КОГДА]
    Окружать (непустые) соответствия, содержащие их строки, контекстные строки, имена файлов, номера строк, смещения в байтах и разделители (полей и групп контекстных строк) экранированными последовательностями для отображения их в цвете при выводе в терминал. Цвета задаются переменной среды окружения GREP_COLORS. КОГДА может принимать значения never (никогда), always (всегда) или auto (автоматически).

-L, --files-without-match
    Подавлять обычно выводимую информацию; вместо неё выводить имя каждого входного файла, содержимое которого не было бы выведено в нормальном режиме работы, так как оно не содержит соответствий.

-l, --files-with-matches
    Подавлять обычно выводимую информацию; вместо неё выводить имя каждого входного файла, содержимое которого было бы выведено в нормальном режиме работы, так как оно содержит соответствия. Поиск в каждом входном файле прекращается после нахождения первого соответствия.

-m ЧИСЛО, --max-count=ЧИСЛО
    Прекратить чтение файла после ЧИСЛА строк с соответствиями. Если ЧИСЛО равно нулю, grep прекращает работу сразу, не выполняя чтение входных данных. ЧИСЛО, заданное как -1 (используется по умолчанию), считается бесконечностью и позволяет grep не прекращать чтение. Если входные данные поступают из стандартного потока ввода и являются содержимым обычного файла, grep гарантирует, что после вывода ЧИСЛА строк с совпадениями текущая позиция в стандартном потоке ввода будет указывать на строку, следующую непосредственно за последней совпавшей строкой, независимо от наличия завершающих вывод контекстных строк. Это позволяет продолжить поиск вызывающему процессу. Когда утилита grep прекращает обработку после обнаружения ЧИСЛА строк с соответствиями, она выводит завершающие вывод контекстные строки. Если также указан параметр -c или --count, grep не будет выводить количество, превышающее значение ЧИСЛО. Если также указан параметр -v или --invert-match, grep прекратит обработку после вывода ЧИСЛА несоответствующих строк.

-o, --only-matching
    Выводить только совпавшие (непустые) части строки с соответствиями, при выводе помещая каждую такую часть на новую строку.

-q, --quiet, --silent
    «Тихий» режим работы: не записывать ничего в стандартный поток вывода. Немедленно завершить работу с кодом, равным нулю, при нахождении любого соответствия даже в случае возникновения ошибок. См. также параметр -s или --no-messages.

-s, --no-messages
    Не выводить сообщения об ошибках, связанных с отсутствующими или нечитаемыми файлами.

  Настройки префиксов выводимых строк

-b, --byte-offset
    Выводить отсчитываемое от 0 в байтах смещение во входном файле перед каждой выводимой строкой. Если указан параметр -o (--only-matching), выводить смещение самой совпавшей части.

-H, --with-filename
    Выводить имя файла для каждого соответствия. Данный параметр используется по умолчанию, если поиск выполняется в нескольких файлах. Данный параметр является расширением GNU.

-h, --no-filename
    Не выводить имена файлов в качестве префиксов выводимых строк. Данный параметр используется по умолчанию, если поиск выполняется только в одном файле (или в данных из стандартного потока ввода).

--label=МЕТКА
    Display input actually coming from standard input as input coming from file LABEL. This can be useful for commands that transform a file's contents before searching, e.g., gzip -cd foo.gz | grep --label=foo -H 'some pattern'. See also the -H option.

-n, --line-number
    Предварять вывод каждой строки её номером во входном файле, отсчитывая его от 1.

-T, --initial-tab
    Осуществлять вывод таким образом, чтобы первый символ фактического содержимого строки располагался на позиции табуляции и выравнивание символов табуляции выглядело нормальным. Это может быть полезно при использовании параметров, добавляющих префиксы к выводимому фактическому содержимому: -H,-n и -b. Чтобы повысить вероятность того, что все строки из одного файла будут начинаться с одного и того же столбца, данный параметр также уменьшает размер полей с номерами строк и смещениями в байтах (при их наличии) до минимального.

-Z, --null
    Выводить нулевой байт (символ NUL в таблице ASCII) вместо символа, который обычно следует за именем файла. Например, grep -lZ будет выводить нулевой байт после каждого имени файла вместо обычного перевода на новую строку. Данный параметр позволяет привести выходные данные к однозначному виду, даже если имена файлов содержат такие необычные символы, как переводы строк. Данный параметр может быть использован с такими командами, как find -print0, perl -0, sort -z и xargs -0, чтобы обеспечить обработку произвольных имён файлов, в том числе содержащих символы перевода на новую строку.

  Настройки контекстных строк

-A ЧИСЛО, --after-context=ЧИСЛО
    Выводить ЧИСЛО строк контекста, следующего за строками с найденными соответствиями. Между смежными группами соответствий помещается строка с групповым разделителем (--). Данный параметр не действует при использовании параметра -o или --only-matching, о чём будет выведено предупреждение.

-B ЧИСЛО, --before-context=ЧИСЛО
    Выводить ЧИСЛО строк контекста, предшествующего строкам с найденными соответствиями. Между смежными группами соответствий помещается строка с групповым разделителем (--). Данный параметр не действует при использовании параметра -o или --only-matching, о чём будет выведено предупреждение.

-C ЧИСЛО, -ЧИСЛО, --context=ЧИСЛО
    Выводить ЧИСЛО строк контекста. Между смежными группами соответствий помещается строка с групповым разделителем (--). Данный параметр не действует при использовании параметра -o или --only-matching, о чём будет выведено предупреждение.

--group-separator=РАЗДЕЛИТЕЛЬ
    При использовании параметров -A, -B или -C выводить РАЗДЕЛИТЕЛЬ вместо -- между группами строк.

--no-group-separator
    При использовании параметров -A, -B или -C не выводить разделитель между группами строк.

  Выбор файлов и каталогов

-a, --text
    Обрабатывать двоичные файлы как текстовые; данный параметр равнозначен параметру --binary-files=text.

--binary-files=ТИП
    Если данные или метаданные файла указывают на то, что файл содержит двоичные данные, считать, что файл имеет тип ТИП. Байты, не являющиеся текстовой информацией, указывают на двоичные данные; таковыми являются либо выходные байты, неверно закодированные с точки зрения текущих региональных настроек, либо нулевые входные байты, если параметр -z не задан.

    По умолчанию ТИП задан как binary, и grep подавляет вывод после обнаружения нулевых байтов в двоичных входных данных, а также подавляет вывод строк, содержащих неверно закодированную информацию. В случае подавления каких-либо выходных данных grep сопровождает это сообщением в стандартный поток ошибок о том, что в двоичном файле найдены соответствия.

    Если ТИП задан как without-match, при обнаружении нулевых байтов в двоичных входных данных grep полагает, что оставшаяся часть файла не содержит соответствий; данный параметр равнозначен параметру -I.

    Если ТИП задан как text, grep обрабатывает двоичные файлы как текстовые; данный параметр равнозначен параметру -a.

    Когда ТИП задан как binary, grep может воспринимать нетекстовые байты в качестве разделителей строк даже при отсутствии параметра -z. Это означает, что выбор между binary и text может повлиять на обнаружение соответствия шаблона и содержимого файла. Например, если ТИП задан как binary, шаблон q$ может соответствовать символу q, непосредственно за которым следует нулевой байт, хотя этого соответствия не будет обнаружено, если ТИП задан как text. И наоборот, если ТИП задан как binary, шаблон . (точка) может не совпасть с нулевым байтом.

    Warning: The -a option might output binary garbage, which can have nasty side effects if the output is a terminal and if the terminal driver interprets some of it as commands. On the other hand, when reading files whose text encodings are unknown, it can be helpful to use -a or to set LC_ALL='C' in the environment, in order to find more matches even if the matches are unsafe for direct display.

-D ДЕЙСТВИЕ, --devices=ДЕЙСТВИЕ
    Если входной файл представляет собой устройство, FIFO или сокет, выполнить ДЕЙСТВИЕ для его обработки. По умолчанию ДЕЙСТВИЕ задаётся как read, что означает, что устройства будут считываться так же, как если бы они были обычными файлами. Если ДЕЙСТВИЕ задано как skip, устройства будут пропущены без каких-либо уведомлений.

-d ДЕЙСТВИЕ, --directories=ДЕЙСТВИЕ
    Если входной файл представляет собой каталог, выполнить ДЕЙСТВИЕ для его обработки. По умолчанию ДЕЙСТВИЕ задаётся как read, что подразумевает чтение каталогов так, как если бы они были обычными файлами. Если ДЕЙСТВИЕ задано как skip, пропускать каталоги без каких-либо уведомлений. Если ДЕЙСТВИЕ задано как recurse, рекурсивно считывать все файлы в каждом каталоге, разыменовывая символьные ссылки, только если они указаны в командной строке. Выбор этого действия равнозначен указанию параметра -r.

--exclude=ШАБЛОН_ИМЕНИ
    Пропускать любые указанные в командной строке файлы, окончание имени которых соответствует шаблону ШАБЛОН_ИМЕНИ с использованием сравнения по маске (wildcard); окончанием имени считается либо всё имя целиком, либо его завершающая часть, начинающаяся с первого символа, следующего за косой чертой (/) и не являющегося символом косой черты. При рекурсивном поиске пропускать любой вложенный файл, простое имя которого соответствует ШАБЛОНУ_ИМЕНИ; простым именем считается его часть, следующая за последней косой чертой. В шаблоне можно использовать символы *, ? и [...] для задания маски, а \ позволяет экранировать эти символы или символ обратной косой черты для их буквального восприятия.

--exclude-from=ФАЙЛ
    Пропускать файлы, простые имена которых соответствуют какому-либо шаблону имени среди считанных из ФАЙЛА (используя сравнение по маске так же, как это описано для параметра --exclude).

--exclude-dir=ШАБЛОН_ИМЕНИ
    Пропускать любые указанные в командной строке каталоги, окончание имени которых соответствует шаблону ШАБЛОН_ИМЕНИ. При рекурсивном поиске пропускать любой вложенный каталог, простое имя которого соответствует ШАБЛОНУ_ИМЕНИ. Игнорировать лишние символы косой черты, завершающие ШАБЛОН_ИМЕНИ.

-I  Обрабатывать двоичные файлы так, как если бы они не содержали совпавших данных; данный параметр равнозначен параметру --binary-files=without-match.

--include=ШАБЛОН_ИМЕНИ
    Выполнять поиск только в файлах, простые имена которых соответствуют ШАБЛОНУ_ИМЕНИ (используя сравнение по маске так же, как это описано для параметра --exclude). Если заданы противоречащие друг другу параметры --include и --exclude, силу будет иметь последний соответствующий из них. Если соответствие не было найдено ни для параметра --include, ни для параметра --exclude, файл включается в поиск, если параметр --include не указан первым.

-r, --recursive
    Рекурсивно считывать все файлы в каждом каталоге, разыменовывая только те символьные ссылки, которые указаны в командной строке. Обратите внимание, что при отсутствии файловых операндов grep выполняет поиск в рабочем каталоге. Данный параметр равнозначен параметру -d recurse.

-R, --dereference-recursive
    Рекурсивно считывать все файлы в каждом каталоге. В отличие от -r разыменовывать все символьные ссылки.

  Остальные параметры

--line-buffered
    Использовать буферизацию строк при выводе. Данный параметр может привести к снижению производительности.

-U, --binary
    Обрабатывать файлы как двоичные. По умолчанию при работе под управлением MS-DOS и MS-Windows grep пытается угадать, является ли файл текстовым или двоичным, так, как это описано для параметра --binary-files. Если grep решает, что файл является текстовым, он удаляет символы возврата каретки из исходного содержимого файла (чтобы обеспечить правильную работу регулярных выражений с ^ и $). Указание -U переопределяет это поведение, позволяя выполнять чтение и передачу всех файлов механизму сопоставления дословно; если файл является текстовым файлом с парами символов CR/LF (возврат каретки и перевод на новую строку) в конце каждой строки, это приведёт к невозможности сопоставления с некоторыми регулярными выражениями. Данный параметр не действует на платформах, отличных от MS-DOS и MS-Windows.

-z, --null-data
    Обрабатывать входные и выходные данные как последовательности строк, завершающихся нулевым байтом (символом NUL таблицы ASCII), а не символом перевода на новую строку. Как и параметры -Z и --null, этот параметр может использоваться с командами наподобие sort -z, чтобы обеспечить обработку произвольных имён файлов.

РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
Регулярное выражение — это шаблон, описывающий набор строк. Регулярные выражения составляются аналогично арифметическим выражениям с использованием различных операторов для соединения меньших выражений.

grep поддерживает три различных варианта синтаксиса регулярных выражений: «basic» (простые, BRE), «extended» (расширенные, ERE) и «perl» (PCRE). В GNU grep простые и расширенные регулярные выражения — это лишь разные способы записи для одного и того же набора функций сравнения с шаблоном. В других реализациях простые регулярные выражения как правило менее функциональны, чем расширенные, хотя иногда бывает наоборот. Следующее ниже описание относится к расширенным регулярным выражениям; отличия простых регулярных выражений приведены за ним. Perl-совместимые регулярные выражения обладают другим набором функций и описаны в pcre2syntax(3) и pcre2pattern(3), однако работают, только если включена поддержка PCRE.

Основополагающими компонентами являются регулярные выражения, которые соответствуют одному символу. Большинство символов, включая все буквы и цифры, являются регулярными выражениями, которые соответствуют самим себе. Любой метасимвол, имеющий особое значение, можно экранировать, расположив перед ним символ обратной косой черты.

Точка . соответствует любому одному символу. Не уточняется, соответствует ли она символу, полученному в результате ошибки кодирования.

  Классы символов и выражения в квадратных скобках
Выражение в квадратных скобках представляет собой список символов, заключённых в символы [ и ]. Такое выражение соответствует любому одному символу из этого списка. Если первым символом в списке является карет ^, то выражение соответствует любому одному символу, не входящему в список; не уточняется, соответствует ли оно символу, полученному в результате ошибки кодирования. Например, регулярное выражение [0123456789] соответствует любой одной цифре.

Within a bracket expression, a range expression consists of two characters separated by a hyphen. In the default C locale, it matches any single character that appears between the two characters in ASCII order, inclusive. For example, [a-d] is equivalent to [abcd]. In other locales the behavior is unspecified: [a-d] might be equivalent to [abcd] or [aBbCcDd] or some other bracket expression, or it might fail to match any character, or the set of characters that it matches might be erratic, or it might be invalid. To obtain the traditional interpretation of bracket expressions, you can use the C locale by setting the LC_ALL environment variable to the value C.

Наконец, существуют предопределённые классы символов, используемые внутри выражений в квадратных скобках в следующем виде: [:alnum:] (буквенно-цифровые), [:alpha:] (буквенные), [:blank:] (пробел или табуляция), [:cntrl:] (управляющие), [:digit:] (цифровые), [:graph:] (графические), [:lower:] (нижнего регистра), [:print:] (печатаемые), [:punct:] (пунктуационные), [:space:] (пробельные), [:upper:] (верхнего регистра) и [:xdigit:] (шестнадцатеричные). Например, [[:alnum:]] означает класс символов, включающий цифры и буквы с учётом текущих региональных настроек. При использовании региональных настроек C и кодового набора символов ASCII этот класс равносилен выражению [0-9A-Za-z]. Следует обратить внимание, что квадратные скобки в именах перечисленных классов являются частью их имени и должны быть включены в дополнение к скобкам, отделяющим выражение в квадратных скобках. Большинство метасимволов теряют своё особое значение при использовании внутри выражений в квадратных скобках. Чтобы включить символ ], поместите его в начало списка. Аналогично, чтобы включить символ ^, поместите его в любое место кроме начала. Наконец, чтобы включить символ -, поместите его в конец списка.

  Якоря
Карет ^ и знак доллара $ являются метасимволами, которые соответствуют пустой последовательности в начале и в конце строки соответственно.

  Символ обратной косой черты и специальные выражения
Символы \< и \> соответствуют пустой последовательности в начале и в конце слова соответственно. Символ \b соответствует пустой последовательности на границе слова, а \B соответствует пустой последовательности, которая не находится на границе слова. Символ \w является синонимом выражения [_[:alnum:]], а \W — синонимом [^_[:alnum:]].

  Повторение
За регулярным выражением может следовать один или несколько операторов повторения:
?   Предыдущий элемент является необязательным и сопоставляется не более одного раза.
*   Предыдущий элемент сопоставляется ноль или более раз.
+   Предыдущий элемент сопоставляется один или более раз.
{n} Предыдущий элемент сопоставляется в точности n раз.
{n,}
    Предыдущий элемент сопоставляется n или более раз.
{,m}
    Предыдущий элемент сопоставляется не более m раз. Данный оператор является расширением GNU.
{n,m}
    Предыдущий элемент сопоставляется минимум n раз, но не более m раз.

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

  Чередование
Два регулярных выражения могут быть соединены инфиксным оператором |; результирующее регулярное выражение соответствует любой строке, которая соответствует одному из соединённых выражений.

  Очерёдность
Повторение имеет приоритет перед объединением, которое, в свою очередь, имеет приоритет перед чередованием. Выражение может быть заключено в круглые скобки, чтобы переопределить эти правила очерёдности и сформировать подвыражение.

  Обратные ссылки и подвыражения
Обратная ссылка \n, где n — одиночная цифра, соответствует подстроке, для которой ранее было найдено соответствие n-ому подвыражению в круглых скобках, входящему в состав регулярного выражения.

  Различия между простыми и расширенными регулярными выражениями
В простых регулярных выражениях метасимволы ?, +, {, |, ( и ) теряют своё особое значение; вместо них следует использовать экранированные варианты \?, \+, \{, \|, \( и \).

КОД ЗАВЕРШЕНИЯ
В обычном режиме работы код завершения равен 0, если строка с совпадением была обнаружена; 1, если таких строк не было найдено; 2, если произошла ошибка. Однако, при использовании параметров -q, --quiet или --silent обнаружение строки с совпадением приводит к завершению с кодом 0, даже если были обнаружены ошибки.

СРЕДА ОКРУЖЕНИЯ
На поведение grep влияют следующие переменные среды окружения.

Региональные настройки для категории LC_foo определяются путём анализа трёх переменных среды LC_ALL, LC_foo, LANG в указанном порядке. Первая из этих переменных, для которой было задано значение, определяет региональные настройки. Например, если переменная LC_ALL не установлена, а LC_MESSAGES задано значение pt_BR, то для категории LC_MESSAGES будут использованы настройки, принятые для бразильского португальского. Если ни одна из перечисленных переменных не задана, не установлен каталог региональных настроек или компиляция grep осуществлялась без поддержки национальных языков (NLS), то будут использованы региональные настройки C. Команда оболочки locale -a позволяет вывести список доступных региональных настроек.

GREP_COLORS
    Управляет подсветкой выводимых данных при использовании параметра --color. Значение этой переменной представляет собой список возможностей, разделённых двоеточиями; по умолчанию оно задано как ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36, при этом возможности rv и ne опущены (т.е. установлены в логическое значение «ложь»). Поддерживаемые возможности представлены ниже.

    sl= Подстрока SGR для выбранных строк целиком (другими словами, для строк с соответствиями, если не указан параметр командной строки -v, или для строк без соответствий, если -v указан). Однако, если задана возможность rv и параметр командной строки -v, то вместо этого данная подстрока SGR применяется к контекстным строкам с соответствиями. По умолчанию значение не устанавливается (т.е. используется цветовая пара по умолчанию, заданная для терминала).

    cx= Подстрока SGR для контекстных строк целиком (другими словами, для строк без соответствий, если не указан параметр командной строки -v, или для строк с соответствиями, если -v указан). Однако, если задана возможность rv и параметр командной строки -v, то вместо этого данная подстрока SGR применяется к выбранным строкам без соответствий. По умолчанию значение не устанавливается (т.е. используется цветовая пара по умолчанию, заданная для терминала).

    rv  Логическое значение, которое меняет действия возможностей sl= и cx= на противоположные, если указан параметр командной строки -v. Значением по умолчанию является «ложь» (т.е. возможность не указана).

    mt=01;31
        Подстрока SGR для непустого совпавшего текста в любой строке с соответствиями (другими словами, в выбранной строке, если не указан параметр командной строки -v, или в контекстной строке, если -v указан). Установка этой возможности равносильна одновременной установке ms= и mc= в одно и то же значение. По умолчанию используется выделенный жирным красным шрифтом текст на переднем плане поверх текущего фонового цвета строки.

    ms=01;31
        Подстрока SGR для непустого совпавшего текста в выбранной строке (используется только в том случае, если параметр командной строки -v не указан). Действие возможности sl= (или cx= при активной rv) остаётся в силе, когда данная возможность срабатывает. По умолчанию используется выделенный жирным красным шрифтом текст на переднем плане поверх текущего фонового цвета строки.

    mc=01;31
        Подстрока SGR для непустого совпавшего текста в контекстной строке (используется только в том случае, если указан параметр командной строки -v). Действие возможности cx= (или sl= при активной rv) остаётся в силе, когда данная возможность срабатывает. По умолчанию используется выделенный жирным красным шрифтом текст на переднем плане поверх текущего фонового цвета строки.

    fn=35
        Подстрока SGR для имён файлов, предшествующих строкам с любым содержимым. По умолчанию используется пурпурный текст на переднем плане поверх фонового цвета по умолчанию, заданного для терминала.

    ln=32
        Подстрока SGR для номеров строк, предшествующих строкам с любым содержимым. По умолчанию используется зелёный текст на переднем плане поверх фонового цвета по умолчанию, заданного для терминала.

    bn=32
        Подстрока SGR для смещений в байтах, предшествующих строкам с любым содержимым. По умолчанию используется зелёный текст на переднем плане поверх фонового цвета по умолчанию, заданного для терминала.

    se=36
        Подстрока SGR для разделителей, которые помещаются между полями выбранных строк (:), между полями контекстных строк (-) и между группами смежных строк, если задан ненулевой размер контекста (--). По умолчанию используется бирюзовый текст на переднем плане поверх фонового цвета по умолчанию, заданного для терминала.

    ne  Логическое значение, которое позволяет предотвратить удаление данных до конца строки с использованием Erase in Line (EL) to Right (\33[K) каждый раз, когда заканчивается выделенный цветом элемент. Это необходимо для терминалов, которые не поддерживают EL. В других случаях это полезно для терминалов, к которым не применяется логическая возможность terminfo back_color_erase (bce), в ситуациях, когда выбранные для выделения цвета не влияют на фон, или когда обработка EL выполняется слишком медленно или вызывает слишком сильное мерцание. Значением по умолчанию является «ложь» (т.е. возможность не указана).

    Обратите внимание, что логические возможности не имеют =... в своём составе. Они опускаются (т.е. принимают значение «ложь») по умолчанию, а при указании принимают значение «истина».

    Обратитесь к разделу Select Graphic Rendition (SGR) в документации к используемому текстовому терминалу, чтобы получить информацию о допустимых значениях и функциях, которые они выполняют в качестве атрибутов символов. Значения рассматриваемых подстрок SGR представляют собой целые числа в десятичном представлении и могут объединяться друг с другом через точки с запятой. grep берёт на себя задачу сборки результата в полноценную последовательность SGR (\33[...m). Распространённые значения, используемые при объединении, включают в себя 1 для получения жирного шрифта, 4 для подчёркивания, 5 для мигания, 7 для инвертирования цвета, 39 для цвета переднего плана по умолчанию, от 30 до 37 для выбора цвета переднего плана, от 90 до 97 для выбора цвета переднего плана в 16-цветном режиме, от 38;5;0 до 38;5;255 для выбора цвета переднего плана в 88-цветном и 256-цветном режимах, 49 для фонового цвета по умолчанию, от 40 до 47 для выбора фонового цвета, от 100 до 107 для выбора фонового цвета в 16-цветном режиме, от 48;5;0 до 48;5;255 для выбора фонового цвета в 88-цветном и 256-цветном режимах.

LC_ALL, LC_COLLATE, LANG
    Данные переменные задают региональные настройки для категории LC_COLLATE, которая определяет правила упорядочивания, используемые при интерпретации диапазонных выражений наподобие [a-z].

LC_ALL, LC_CTYPE, LANG
    Данные переменные задают региональные настройки для категории LC_CTYPE, которая определяет типы символов, например, какие символы считаются пробельными. Эта категория также определяет кодирование символов, то есть закодирован ли текст в UTF-8, ASCII или какой-либо другой кодировке. При использовании региональных настроек C или POSIX все символы кодируются одним байтом и каждый байт является допустимым символом.

LC_ALL, LC_MESSAGES, LANG
    Данные переменные задают региональные настройки для категории LC_MESSAGES, которая определяет язык, используемый grep при выводе сообщений. Выбираемые по умолчанию региональные настройки C используют сообщения на американском варианте английского языка.

POSIXLY_CORRECT
    Если данная переменная задана, поведение grep будет соответствовать требованиям POSIX; в противном случае поведение grep будет больше похоже на поведение других программ от GNU. Стандарты POSIX требуют, чтобы параметры, следующие за именами файлов, воспринимались как имена файлов; по умолчанию такие параметры перемещаются в начало списка операндов и воспринимаются как параметры. Кроме того, стандарты POSIX требуют, чтобы нераспознанные параметры помечались как «незаконные» (illegal), но поскольку на самом деле они не противоречат закону, по умолчанию они помечаются как «недопустимые» (invalid).

ПРИМЕЧАНИЯ
Данная страница руководства обновляется по мере возможности; полная документация нередко является более актуальной.

АВТОРСКИЕ ПРАВА
Copyright 1998–2000, 2002, 2005–2025 Free Software Foundation, Inc.

Это свободное программное обеспечение; обратитесь к исходному коду для получения информации об условиях копирования. НЕ ПРЕДОСТАВЛЯЕТСЯ каких-либо гарантий, в том числе гарантий ОКУПАЕМОСТИ или СООТВЕТСТВИЯ КОНКРЕТНЫМ ЦЕЛЯМ.

ПРОГРАММНЫЕ ОШИБКИ

  Отчёты об ошибках
Отправляйте отчёты об ошибках на адрес электронной почты bug-grep@gnu.org. Также доступны архив электронных писем https://lists.gnu.org/mailman/listinfo/bug-grep и система отслеживания ошибок https://debbugs.gnu.org/cgi/pkgreport.cgi?package=grep.

  Известные ошибки
Задание большого количества повторений в конструкции {n,m} может привести к использованию grep больших объёмов памяти. Кроме того, существуют и некоторые другие регулярные выражения, требующие экспоненциального роста затрачиваемого времени и пространства и способные вызвать нехватку памяти при работе grep.

Обратные ссылки являются очень медленной конструкцией и могут привести к экспоненциальному росту затрачиваемого времени.

ПРИМЕРЫ
The following example outputs the location and contents of any line containing “f” and ending in “.c”, within all files in the current directory whose names contain “g” and end in “.h”. The -n option outputs line numbers, the -- argument treats expansions of “*g*.h” starting with “-” as file names not options, and the empty file /dev/null causes file names to be output even if only one file name happens to be of the form “*g*.h”.

    $ grep -n -- 'f.*\.c$' *g*.h /dev/null
    argmatch.h:1:/* definitions and prototypes for argmatch.c

Единственной строкой, в которой было найдено соответствие, является строка 1 файла argmatch.h. Обратите внимание, что синтаксис регулярного выражения, используемый в шаблоне, отличается от синтаксиса шаблона файловых имён, который использует оболочка.

СМОТРИТЕ ТАКЖЕ

  Обычные страницы руководства
awk(1), cmp(1), diff(1), find(1), perl(1), sed(1), sort(1), xargs(1), read(2), pcre2(3), pcre2syntax(3), pcre2pattern(3), terminfo(5), glob(7), regex(7)

  Полная документация
По адресу https://www.gnu.org/software/grep/manual/ доступно полное руководство. Если программы info и grep корректно установлены в вашей системе, команда

    info grep

должна предоставить вам доступ к полному руководству.

ПЕРЕВОД
Русский перевод этой страницы руководства разработал(и) Андрей Догадкин <adogadkin@outlook.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков (debian-l10n-russian@lists.debian.org).