- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.25.0-1
GREP(1) | Команды пользователя | GREP(1) |
ИМЯ¶
grep, egrep, fgrep, rgrep — вывести строки, соответствующие шаблонам
СИНТАКСИС¶
grep
[ПАРАМЕТР...]
ШАБЛОНЫ
[ФАЙЛ...]
grep
[ПАРАМЕТР...]
-e ШАБЛОНЫ
... [ФАЙЛ...]
grep
[ПАРАМЕТР...]
-f
ФАЙЛ_ШАБЛОНОВ
... [ФАЙЛ...]
ОПИСАНИЕ¶
grep ищет соответствия ШАБЛОНАМ в каждом ФАЙЛе. ШАБЛОНЫ представляют собой один или несколько шаблонов, разделённых символами перевода на новую строку; grep выводит каждую строку, которая совпадает с шаблоном. Обычно ШАБЛОНЫ следует заключать в кавычки, если grep используется в командах оболочки.
Если ФАЙЛ задан как «-», под ним подразумевается стандартный поток ввода. Если ФАЙЛ не задан, то в случае рекурсивного поиска будет выполнен анализ рабочего каталога, а в случае нерекурсивного поиска будет выполнено чтение из стандартного потока ввода.
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=МЕТКА
- Отображать выходные данные, получаемые из стандартного потока ввода, так, как если бы они были получены из файла с именем МЕТКА. Это может оказаться полезным при использовании команд, преобразующих содержимое файла перед поиском, например gzip -cd foo.gz | grep --label=foo -H 'некий шаблон'. См. также параметр -H.
- -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, шаблон . (точка) может не совпасть с нулевым байтом.
- Обратите внимание: использование параметра -a может привести к выводу двоичного «мусора», что может иметь нежелательные последствия, если вывод осуществляется в терминал и его драйвер воспримет часть вывода как команды. С другой стороны, при чтении файлов с неизвестной кодировкой текста использование параметра -a или задание LC_ALL='C' в среде окружения может оказаться полезным, чтобы найти больше соответствий, даже если они небезопасны для непосредственного отображения.
- -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] соответствует любой одной цифре.
Внутри выражения в квадратных скобках может находиться диапазонное выражение, состоящее из двух символов, разделённых дефисом. Оно соответствует любому одному символу, находящемуся с точки зрения порядка при сортировке между двумя указанными символами включительно, с учётом региональных правил упорядочивания и набора символов. Например, при использовании принятых по умолчанию региональных настроек C выражение [a-d] равносильно выражению [abcd]. Для многих региональных настроек принят словарный порядок сортировки, в таких случаях [a-d] обычно не соответствует [abcd], а может быть равносильно, например, [aBbCcDd]. Чтобы добиться традиционной интерпретации выражений в квадратных скобках, вы можете использовать региональные настройки C, установив переменную среды LC_ALL в значение 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). Переменная POSIXLY_CORRECT также отключает переменную _N_GNU_nonoption_argv_flags_, описанную ниже.
- _N_GNU_nonoption_argv_flags_
- (Здесь N — это числовой идентификатор процесса grep) Если i-й символ этой переменной среды равен 1, не считать i-й операнд, переданный grep, параметром, даже если он похож на таковой. Оболочка может помещать данную переменную в среду окружения для каждой запускаемой команды, определяя, какие из операндов являются результатом раскрытия маски (wildcard) файловых имён и не должны восприниматься в качестве параметров. Такое поведение доступно только при использовании библиотеки C от GNU, и только если переменная POSIXLY_CORRECT не установлена.
ПРИМЕЧАНИЯ¶
Данная страница руководства обновляется по мере возможности; полная документация нередко является более актуальной.
АВТОРСКИЕ ПРАВА¶
Copyright 1998-2000, 2002, 2005-2022 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.
Обратные ссылки являются очень медленной конструкцией и могут привести к экспоненциальному росту затрачиваемого времени.
ПРИМЕР¶
Следующий пример выводит расположение и содержимое всех строк, содержащих «f» и заканчивающихся на «.c», которые встречаются во всех файлах текущего каталога, чьи имена содержат «g» и заканчиваются на «.h». Параметр -n позволяет вывести номера строк; аргумент -- предназначен для того, чтобы при раскрытии «*g*.h» имена, начинающиеся с «-», воспринимались как имена файлов, а не параметры; пустой файл /dev/null позволяет вывести имена файлов, даже если только одно имя файла имеет вид «*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>⟩.
2019-12-29 | GNU grep 3.8 |