Skip to main content

Gawk - команда Linux - команда Unix

Kali Linux для начинающих. Урок 8 - Изменения в Kali 2019 относительно APT | Timcore (Июнь 2026)

Kali Linux для начинающих. Урок 8 - Изменения в Kali 2019 относительно APT | Timcore (Июнь 2026)
Anonim

название

gawk - образец сканирования и обработки

конспект

простофиля POSIX или опции стиля GNU -f Программа-файл -- файл …простофиля POSIX или опции стиля GNU -- программный текст файл …

pgawk POSIX или опции стиля GNU -f Программа-файл -- файл …pgawk POSIX или опции стиля GNU -- программный текст файл …

Описание

Gawk является реализация проекта GNU на языке программирования AWK. Он соответствует определению языка в стандарте Command Language And Utilities Standard POSIX 1003.2. Эта версия, в свою очередь, основана на описании в Язык программирования AWK , Aho, Kernighan и Weinberger, с дополнительными функциями, обнаруженными в версии UNIX версии V Release 4 AWK . Gawk также предоставляет более поздние Bell Laboratories AWK расширений и ряда расширений GNU.

Pgawk является профилирующей версией простофиля , Он во всех отношениях идентичен простофиля , за исключением того, что программы работают медленнее, и он автоматически создает профиль выполнения в файле awkprof.out когда сделано. См. --профиль , ниже.

Командная строка состоит из простофиля сам, текст программы AWK (если не предоставляется через -f или же --файл варианты) и значения, которые должны быть доступны в ARGC а также ARGV предопределенные переменные AWK.

Формат опций

Gawk параметры могут быть либо традиционными вариантами одной буквы POSIX, либо длинными вариантами стиля GNU. Параметры POSIX начинаются с одного символа `` - '', а длинные опции начинаются с `` - ''. Предусмотрены длинные опции как для функций, специфичных для GNU, так и для функций, поддерживаемых POSIX.

Следуя стандарту POSIX, простофиля -специальные параметры предоставляются через аргументы -W вариант. множественный -W варианты могут поставляться -W опция имеет соответствующую длинную опцию, как описано ниже. Аргументы для длинных опций либо объединены с опцией, либо = знак, без промежуточных пробелов, или они могут быть предоставлены в следующем аргументе командной строки. Длинные варианты могут быть сокращены, если аббревиатура остается уникальной.

Опции

Gawk принимает следующие параметры, перечисленные в алфавитном порядке.

-F фс

--field-сепаратор фс использование фс для разделителя поля ввода (значение FS предопределенная переменная).

-v вар = вал

--присваивание assign вар = вал Назначить значение вал к переменной вар , прежде чем начнется выполнение программы. Такие значения переменных доступны для НАЧАТЬ блок программы AWK.

-f Программа-файл

--файл Программа-файл Прочтите исходный код программы AWK из файла Программа-файл , а не из первого аргумента командной строки. множественный -f (или же --файл).

-mf NNN

-Мистер NNN Задайте различные пределы памяти для значения NNN , е флаг устанавливает максимальное количество полей, а р флаг устанавливает максимальный размер записи. Эти два флага и -m вариант из исследовательской версии Bell Laboratories UNIX AWK , Они игнорируются простофиля , поскольку простофиля не имеет заранее определенных пределов.

-W compat

-W традиционный

--compat

--traditional Вбежать совместимость Режим. В режиме совместимости, простофиля ведет себя одинаково с UNIX AWK ; ни одно из GNU-специфических расширений не распознается. Использование --traditional является предпочтительным по сравнению с другими формами этого варианта. Увидеть Расширения GNU, ниже, для получения дополнительной информации.

-W copyleft

-W copyright

--copyleft

--авторское право Распечатайте короткую версию сообщения об авторских правах GNU на стандартном выходе и успешно завершите работу.

-W дамп-переменные= файл

--dump-переменные= файл Распечатайте отсортированный список глобальных переменных, их типы и конечные значения для файл , Если нет файл предоставлен, простофиля использует файл с именем awkvars.out в текущем каталоге.

Наличие списка всех глобальных переменных - хороший способ поиска опечаток в ваших программах. Вы также можете использовать эту опцию, если у вас есть большая программа с множеством функций, и вы хотите быть уверены, что ваши функции не будут непреднамеренно использовать глобальные переменные, которые вы должны быть локальными. (Это очень простая ошибка при использовании простых имен переменных, таких как я, J, и так далее.)

-W помощь

-W использование

--Помогите

--использование Распечатайте относительно короткое резюме доступных параметров на стандартном выходе. (За Стандарты кодирования GNU , эти параметры вызывают немедленный успешный выход.)

-W lint= со смертельным исходом

--lint= со смертельным исходом Предоставлять предупреждения о конструкциях, которые являются сомнительными или не переносимыми для реализации otherAWK. С дополнительным аргументом фатальный, предупреждения линта становятся фатальными ошибками. Это может быть решительным, но его использование, безусловно, будет способствовать разработке более чистых программ AWK.

-W lint-old

--lint давности Предоставлять предупреждения о конструкциях, которые не переносятся в исходную версию Unix AWK .

-W gen-po

--gen-ро Сканировать и анализировать программу AWK и генерировать GNU .po формат файла на стандартном выходе с записями для всех локализуемых строк в программе. Сама программа не выполняется. Смотрите GNU Gettext распространение для получения дополнительной информации о .po файлы.

-W не-десятичные данные

--non-десятичный-данные Распознавать восьмеричные и шестнадцатеричные значения во входных данных. Используйте этот параметр с большой осторожностью!

-W posix

--posix Это включается совместимость режиме со следующими дополнительными ограничениями:

*

Икс escape-последовательности не распознаются.

*

Только пространство и вкладка действуют как разделители полей, когда FS устанавливается в одно пространство, в новой строке - нет.

*

Вы не можете продолжать линии после ? а также :.

*

Синоним FUNC для ключевого слова функция не признается.

*

Операторы ** а также **= не могут быть использованы вместо ^ а также ^=.

*

fflush () функция недоступна.

-W профиль= prof_file

--профиль= prof_file Отправьте профилирующие данные в prof_file , По умолчанию используется awkprof.out, При работе с простофиля , профиль - это просто «довольно печатная» версия программы. При работе с pgawk , профиль содержит счетчики выполнения каждого оператора в программе в левом поле и числа вызовов функций для каждой определяемой пользователем функции.

-W повторный интервал

--re интервал Включить использование интервальные выражения в регулярном выражении (см. Регулярные выражения, ниже). Интервальные выражения традиционно не были доступны на языке AWK. Стандарт POSIX добавил их, чтобы AWK а также задать расширенное согласующиеся друг с другом. Однако их использование, вероятно, нарушит старые программы AWK, поэтому простофиля только предоставляет их, если они запрашиваются с помощью этой опции, или когда --posix .

-W источник программный текст

--источник программный текст использование программный текст как исходный код программы AWK. Эта опция позволяет легко смешивать библиотечные функции (используемые через -f а также --файл варианты) с исходным кодом, введенным в командной строке. Он предназначен в первую очередь для средних и больших AWK-программ, используемых в сценариях оболочки.

-W версия

--версия Информация о версии для данной копии простофиля на стандартном выходе. Это полезно, главным образом, для того, чтобы узнать, соответствует ли текущая копия простофиля на вашей системе в актуальном состоянии в отношении того, что распространяется в Free Software Foundation. Это также полезно при создании отчетов об ошибках. (За Стандарты кодирования GNU , эти параметры вызывают немедленный успешный выход.)

-- Сигнал конца опций. Это полезно, чтобы позволить дальнейшим аргументам самой программе AWK начать с `` - ''. Это в основном для согласованности с соглашением о разборе аргументов, используемым большинством других программ POSIX.

В режиме совместимости любые другие параметры помечены как недопустимые, но в противном случае игнорируются. При нормальной работе до тех пор, пока текст программы предоставлен, неизвестные параметры передаются программе AWK в ARGV массив для обработки. Это особенно полезно для запуска AWK-программ с помощью механизма `` #! '' Исполняемого интерпретатора.

ВЫПОЛНЕНИЕ ПРОГРАММЫ AWK

Программа AWK состоит из последовательности операторов шаблонов и необязательных определений функций.

шаблон { заявления о действиях }функция название ( список параметров ) { заявления }

Gawk сначала читает источник программы из Программа-файл (s), если указано, от аргументов до --источник, или из первого аргумента без опции в командной строке. -f а также --источник параметры могут использоваться несколько раз в командной строке. Gawk читает текст программы, как будто все Программа-файл s и исходные тексты командной строки были объединены вместе. Это полезно для создания библиотек функций AWK без необходимости включать их в каждую новую программу AWK, которая их использует. Он также предоставляет возможность комбинировать библиотечные функции с программами командной строки.

Переменная среды AWKPATH указывает путь поиска, который будет использоваться при поиске исходных файлов, названных с помощью -f вариант. Если эта переменная не существует, путь по умолчанию": / USR / местные / доли / AWK", (Фактический каталог может отличаться в зависимости от того, как простофиля был построен и установлен.) Если имя файла, присвоенное -f опция содержит символ `` / '', поиск путей не выполняется.

Gawk выполняет программы AWK в следующем порядке. Во-первых, все переменные назначения, заданные с помощью -v . Следующий, простофиля компилирует программу во внутреннюю форму. Затем, простофиля выполняет код в НАЧАТЬ блок (ы) (если есть), а затем переходит к чтению каждого файла, указанного в ARGV массив. Если в командной строке нет файлов, простофиля читает стандартный ввод.

Если имя файла в командной строке имеет форму вар = вал он рассматривается как назначение переменной. Переменная вар будет присвоено значение вал , (Это происходит после любого НАЧАТЬ блок (ы).) Назначение переменных в командной строке наиболее полезно для динамического присвоения значений переменным AWK для управления тем, как ввод данных разбит на поля и записи. Он также полезен для управления состоянием, если для одного файла данных требуется несколько проходов.

Если значение определенного элемента ARGV пустой (''), простофиля проскакивает над ним.

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

Наконец, после того, как весь вход исчерпан, простофиля выполняет код в КОНЕЦ блок (ы) (если есть).

Переменные, записи и поля

Переменные AWK являются динамическими; они возникают, когда они впервые используются. Их значения - это числа с плавающей запятой или строки или оба, в зависимости от того, как они используются. AWK также имеет одномерные массивы; массивы с несколькими измерениями. В качестве запуска программы задано несколько предопределенных переменных; они будут описаны как необходимо и обобщены ниже.

документация

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

поля

Когда каждая входная запись считывается, простофиля разбивает запись на поля , используя значение FS переменная как разделитель полей. Если FS является единственным символом, поля разделяются этим символом. Если FS является пустой строкой, тогда каждый отдельный символ становится отдельным полем. Иначе, FS как ожидается, будет полным регулярным выражением. В частном случае, что FS - это одно пространство, поля разделяются пробелами пробелов и / или вкладками и / или символами новой строки. (Но см. Обсуждение --posix, ниже). НОТА: Значение IGNORECASE (см. ниже) также влияет на разделение полей, когда FS является регулярным выражением, и как записи разделяются, когда RS является регулярным выражением.

Если FIELDWIDTHS переменной присваивается пробельный список чисел, каждое поле должно иметь фиксированную ширину и простофиля разбивает запись с использованием указанной ширины. Значение FS игнорируется. Присвоение нового значения FS переопределяет использование FIELDWIDTHS, и восстанавливает поведение по умолчанию.

Каждое поле во входной записи может ссылаться на его позицию, $1, $2, и так далее. $0 это вся запись. На поля не обязательно ссылаться на константы:

n = 5print $ n

печатает пятое поле во входной записи.

Переменная NF устанавливается на общее количество полей во входной записи.

Ссылки на несуществующие поля (т. Е. Поля после $ NF) создают нулевую строку. Однако присвоение несуществующему полю (например, $ (NF + 2) = 5) увеличивает значение NF, создает любые промежуточные поля с нулевой строкой в ​​качестве их значения и вызывает значение $0 для переоценки, причем поля разделяются значением OFS, Ссылки на отрицательные нумерованные поля вызывают фатальную ошибку. Уменьшение номера NF приводит к потере значений полей за новое значение, а значение $0 для переоценки, причем поля разделяются значением OFS.

Присвоение значения существующему полю приводит к перестройке всей записи, когда $0 ссылается. Аналогично, присваивая значение $0 заставляет реплицировать запись, создавая новые значения для полей.

Встроенные переменные

Gawk Встроенные переменные:

ARGC

Количество аргументов командной строки (не включает параметры простофиля , или источник программы).

ARGIND

Индекс в ARGV текущего обрабатываемого файла.

ARGV

Массив аргументов командной строки. Массив индексируется от 0 до ARGC - 1. Динамическое изменение содержимого ARGV может управлять файлами, используемыми для данных.

BINMODE

В системах, отличных от POSIX, указывается использование «двоичного» режима для всех операций ввода-вывода файлов. Числовые значения 1, 2 или 3 указывают, что входные файлы, выходные файлы или все файлы, соответственно, должны использовать двоичный ввод-вывод. Строковые значения "р", или же «Ж» укажите, что входные файлы или выходные файлы, соответственно, должны использовать двоичный ввод-вывод. Строковые значения "RW" или же «Сог» укажите, что все файлы должны использовать двоичный ввод-вывод. Любое другое строковое значение рассматривается как "RW", но генерирует предупреждающее сообщение.

CONVFMT

Формат преобразования для чисел, "% .6g", по умолчанию.

ЭНВАЙРОН

Массив, содержащий значения текущей среды. Массив индексируется переменными среды, каждый из которых является значением этой переменной (например,ENVIRON "HOME" возможно / Главная / Arnold). Изменение этого массива не влияет на среду, наблюдаемую программами, которые простофиля порождает путем перенаправления или Система ()функция.

ERRNO

Если возникает системная ошибка, выполняющая перенаправление для GetLine, во время чтения GetLine, или во время близко(), затем ERRNO будет содержать строку, описывающую ошибку. Значение может быть переведено в неанглийский язык.

FIELDWIDTHS

Список полей, разделенных пробелом в белом пространстве. Когда установлено, простофиля анализирует входные данные в поля фиксированной ширины, вместо использования значения FS переменная как разделитель полей.

ИМЯ ФАЙЛА

Имя текущего входного файла.Если в командной строке не указаны файлы, значение ИМЯ ФАЙЛА это `` - ''. Тем не мение, ИМЯ ФАЙЛА не определено внутри НАЧАТЬ блок (если не установлен GetLine).

FNR

Номер входной записи в текущем входном файле.

FS

Разделитель полей ввода, пробел по умолчанию. Увидеть поля, выше.

IGNORECASE

Управляет чувствительностью к регистру всех операций регулярного выражения и строковых операций. Если IGNORECASE имеет ненулевое значение, затем сопоставление строк и сопоставление шаблонов в правилах, разделение полей с помощью FS, запись, разделяющая RS, совпадение регулярных выражений с ~а также !~, и gensub (), GSUB (), индекс(), матч(), Трещина(), а также к югу () встроенные функции игнорируют регистр при выполнении операций регулярного выражения. НОТА: Подписывание массива не и asort () функция.

Таким образом, если IGNORECASE не равна нулю, / Ав / соответствует всем строкам «Абы», «АВы»,"Ab", а также "AB", Как и во всех переменных AWK, начальное значение IGNORECASE равен нулю, поэтому все операции с регулярным выражением и строкой обычно чувствительны к регистру. В Unix используется полный набор символов ISO 8859-1 Latin-1 при игнорировании случая.

LINT

Обеспечивает динамическое управление --lint вариант из программы AWK. Когда это правда, простофиля печатает предупреждения линта. Когда ложь, это не так. При присвоении строкового значения «Фатальный», предупреждения линта становятся фатальными ошибками, точно такими же, как --lint = со смертельным исходом, Любое другое истинное значение просто печатает предупреждения.

NF

Количество полей в текущей входной записи.

NR

Общее количество входных записей, зарегистрированных до сих пор.

OFMT

Формат вывода для чисел, "% .6g", по умолчанию.

OFS

Разделитель выходного поля, пробел по умолчанию.

ORS

Разделитель выходной записи, по умолчанию - новая строка.

PROCINFO

Элементы этого массива обеспечивают доступ к информации о текущей программе AWK. В некоторых системах в массиве могут быть элементы, "группа 1" через «группа N ' для некоторых N , который представляет собой число дополнительных групп, которые этот процесс имеет. Использовать в оператора для проверки этих элементов. Доступны следующие элементы:

PROCINFO "EGID"

значение getegid (2) системный вызов.

PROCINFO "EUID"

значение geteuid (2) системный вызов.

PROCINFO "FS"

"FS" если разделение поля с FS действует, или "FIELDWIDTHS" если разделение поля с FIELDWIDTHS действует.

PROCINFO "ГИД"

значение getgid (2) системный вызов.

PROCINFO "pgrpid"

идентификатор группы процессов текущего процесса.

PROCINFO "PID"

идентификатор процесса текущего процесса.

PROCINFO "PPID"

идентификатор родительского процесса текущего процесса.

PROCINFO "UID"

значение getuid (2) системный вызов.

RS

Селектор входных записей, по умолчанию - новая строка.

RT

Терминатор записи. Gawk наборы RT к входному тексту, который соответствует символу или регулярному выражению, указанному в RS.

RSTART

Индекс первого символа, соответствующий матч(); 0, если нет совпадения. (Это означает, что индексы символов начинаются с одного.)

RLENGTH

Длина строки, согласованной матч(); -1, если нет совпадения.

SUBSEP

Символ, используемый для разделения нескольких индексов в элементах массива, по умолчанию ' 034'.

ДОМЕН

Текстовая область программы AWK; используется для поиска локализованных переводов для строк программы.

Массивы

Массивы индексируются с выражением между квадратными скобками ( а также ). Если выражение представляет собой список выражений ( выраж , выраж …), то индекс массива представляет собой строку, состоящую из конкатенации значения (строки) каждого выражения, разделенного значением SUBSEP переменная. Этот объект используется для моделирования многоразмерных массивов. Например:

i = "A"; j = "B"; k = "C"x i, j, k = "hello, world n"

присваивает строку "привет, мир n" к элементу массива Икс который индексируется строкой"A 034B 034C", Все массивы в AWK являются ассоциативными, то есть индексируются строковыми значениями.

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

if (val in array) print array val

Если массив имеет несколько индексов, используйте (i, j) в массиве.

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

Элемент может быть удален из массива, используя удалять заявление. удалять оператор также может использоваться для удаления всего содержимого массива, просто указав имя массива без индекса.

Переменный ввод и преобразование

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

Чтобы заставить переменную обрабатывать как число, добавьте к ней 0; чтобы заставить его рассматривать как строку, объединить его с нулевой строкой.

Когда строка должна быть преобразована в число, преобразование выполняется с использованием strtod (3). Число преобразуется в строку, используя значение CONVFMT как строку формата для Sprintf (3), с числовым значением переменной в качестве аргумента. Однако, несмотря на то, что все числа в AWK являются плавающей точкой, интегральные значения всегда преобразованные как целые числа. Таким образом, данный

CONVFMT = "% 2.2f" a = 12 b = a ""

переменная б имеет строковое значение '12' и не '12.00'.

Gawk выполняет сравнения следующим образом: если две переменные являются числовыми, они сравниваются численно. Если одно значение является числовым, а другое имеет строковое значение, которое является «числовой строкой», тогда сравнения также выполняются численно. В противном случае числовое значение преобразуется в строку и выполняется сравнение строк. Конечно, две строки сравниваются как строки. Обратите внимание, что стандарт POSIX применяет понятие «числовой строки» везде, даже для строковых констант. Однако это явно неверно, и простофиля не делает этого. (К счастью, это исправлено в следующей версии стандарта.)

Обратите внимание, что строковые константы, такие как '57', являются не числовые строки, это строковые константы. Идея «числовой строки» применяется только к полям, GetLine вход, ИМЯ ФАЙЛА, ARGV элементы, ЭНВАЙРОН элементов и элементов массива, созданных Трещина() которые являются числовыми строками. Основная идея заключается в том, что ввод пользователя , и только пользовательский ввод, который выглядит как числовой, должен рассматриваться таким образом.

Неинициализированные переменные имеют числовое значение 0 и строковое значение "" (нулевая или пустая строка).

Октальные и шестнадцатеричные константы

Начиная с версии 3.1 gawk, вы можете использовать восьмеричные и шестнадцатеричные константы C-стиля в исходном коде программы AWK. Например, восьмеричное значение 011 равно десятичной 9, и шестнадцатеричное значение 0x11 равна десятичному значению 17.

Строковые константы

Строковые константы в AWK - это последовательности символов, заключенных между двойными кавычками ('). Внутри строк определенные управляющие последовательности признаны, как и в С. Это:

\

Литеральная обратная косая черта.

а

Символ `` alert ''; обычно символ ASCII BEL.

б

Забой.

е

Форма кормить.

п

новая линия.

р

возврат каретки.

т

горизонтальная вкладка.

v

вертикальная вкладка.

Икс шестнадцатеричные цифры

Символ, представленный строкой шестнадцатеричных цифр после Икс, Как и в ANSIC, все последующие шестнадцатеричные цифры считаются частью escape-последовательности. (Эта функция должна рассказать нам кое-что о дизайне языка комитетом.) Например, " X1B" является символом ASCIIESC (escape).

ддд

Символ, обозначенный 1-, 2- или 3-значной последовательностью восьмеричных цифр. Например., ' 033' это символ ASCII ESC (escape).

с

Литеральный характер с .

Управляющие последовательности могут также использоваться в постоянных регулярных выражениях (например,/ t f n r v / соответствует символам пробела).

В режиме совместимости символы, представленные восьмеричными и шестнадцатеричными escape-последовательностями, обрабатываются буквально при использовании в константах регулярного выражения. Таким образом, / А 52b / эквивалентно/ А * б /.

Шаблоны и действия

AWK - это ориентированный на линию язык. Сначала идет шаблон, а затем действие. Заявления о действиях прилагаются в { а также }, Либо шаблон может отсутствовать, либо действие может отсутствовать, но, конечно, не оба. Если шаблон отсутствует, действие выполняется для каждой записи ввода. Отсутствующее действие эквивалентно

{ Распечатать }

который печатает всю запись.

Комментарии начинаются с символа `` # '' и продолжаются до конца строки. Пустые строки могут использоваться для разделения операторов. Обычно оператор заканчивается символом новой строки, однако это не относится к строкам, заканчивающимся символом ``, ​​'', {, ?, :, &&, или же ||, Линии, заканчивающиеся на делать или же еще также автоматически сохраняют свои утверждения в следующей строке. В других случаях строка может быть продолжена путем ее завершения с помощью символа ', и в этом случае новая строка будет проигнорирована.

Несколько операторов могут быть помещены в одну строку, разделив их на ``; ''. Это относится как к операторам внутри части действия пары шаблонов (обычный случай), так и к самим утверждениям шаблона.

Узоры

Шаблоны AWK могут быть следующими:

НАЧАТЬ КОНЕЦ / регулярное выражение / реляционное выражение шаблон && шаблон шаблон || шаблон шаблон ? шаблон : шаблон ( шаблон ) ! шаблон pattern1 , pattern2

НАЧАТЬ а также КОНЕЦ это два специальных типа шаблонов, которые не тестируются на вход. Части действия всех НАЧАТЬ шаблоны сливаются, как если бы все утверждения были написаны в одном НАЧАТЬ блок. Они выполняются до считывания любого из входных данных. Аналогичным образом, все КОНЕЦ блоки объединяются и выполняются, когда весь вход исчерпан (или когда выход оператор выполняется). НАЧАТЬ а также КОНЕЦ шаблоны нельзя комбинировать с другими шаблонами в выражениях шаблонов. НАЧАТЬ а также КОНЕЦ шаблоны не могут иметь отсутствующих частей действия.

За / регулярное выражение / шаблонов, соответствующий оператор выполняется для каждой входной записи, которая соответствует регулярному выражению. Регулярные выражения такие же, как в задать расширенное (1) и приведены ниже.

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

&&, ||, а также ! операторы являются логическими И, логическими ИЛИ и логическими НЕ, соответственно, как в С. Они проводят оценку короткого замыкания, также как и в С, и используются для объединения более примитивных выражений шаблонов. Как и в большинстве языков, круглые скобки могут использоваться для изменения порядка оценки.

?: оператор подобен тому же оператору в C. Если первый шаблон является истинным, тогда шаблон, используемый для тестирования, является вторым образцом, в противном случае он является третьим. Оценивается только один из второго и третьего шаблонов.

pattern1 , pattern2 форма выражения называется модель диапазона , Он соответствует всем входным записям, начиная с записи, которая соответствует pattern1 , и продолжается до записи, которая соответствует pattern2 , включительно. Он не сочетается с каким-либо другим выражением шаблона.

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

Регулярные выражения - это расширенный вид, найденный в задать расширенное , Они состоят из символов следующим образом:

с

соответствует не-метасимволу с .

с

соответствует буквальному символу с .

.

соответствует любому персонажу в том числе новая линия.

^

соответствует началу строки.

$

соответствует концу строки.

а …

список символов, соответствует любому из символов а … .

^ а …

список отмененных символов, соответствует любому символу, кроме а … .

r1 | r2

чередование: соответствует либо r1 или же r2 .

R1R2

конкатенация: совпадение r1 , а потом r2 .

р +

соответствует одному или нескольким р «S.

р *

соответствует нулю или больше р «S.

р ?

соответствует нулю или одному р «S.

( р )

группировка: совпадение р .

р { N }

р { N ,}

р { N , м } Один или два числа внутри фигурных скобок обозначают интервальное выражение , Если в фигурных скобках имеется одно число, предыдущее регулярное выражение р повторяется N раз. Если есть два числа, разделенные запятой, р повторяется N в м раз. Если есть одно число, за которым следует запятая, тогда р повторяется по крайней мере N раз.

Интервальные выражения доступны только в том случае, если --posix или же --re интервал указан в командной строке.

у

соответствует пустой строке в начале или в конце слова.

B

соответствует пустой строке внутри слова.

<

соответствует пустой строке в начале слова.

>

соответствует пустой строке в конце слова.

ш

соответствует любому текстовому элементу (букве, цифре или подчеркиванию).

W

соответствует любому символу, который не является составной частью слова.

`

соответствует пустой строке в начале буфера (строки).

'

соответствует пустой строке в конце буфера.

Управляющие последовательности, которые действительны в строковых константах (см. Ниже), также действительны в регулярных выражениях.

Классы символов новая функция, введенная в стандарте POSIX. Класс символов - это специальное обозначение для описания списков символов, которые имеют конкретный атрибут, но где сами фактические персонажи могут варьироваться в зависимости от страны и / или от набора символов до набора символов. Например, понятие того, что является буквенным символом, отличается в США и во Франции.

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

Цифра, буква

Буквенно-цифровые символы.

:альфа:

Алфавитные символы.

: Пусто:

Пробелы или символы табуляции.

: CNTRL:

Управляющие символы.

: Цифры:

Числовые символы.

: График:

Символы, которые являются как печатными, так и видимыми. (Пространство доступно для печати, но не отображается, оба.)

: Нижняя:

Строчные буквенные символы.

:Распечатать:

Печатные символы (символы, которые не являются управляющими символами).

Пунктуатор

Пунктуационные символы (символы, которые не являются буквами, цифрами, управляющими символами или пробелами).

:пространство:

Символы пробела (например, пробел, табуляция и форматирование, чтобы назвать несколько).

: Верхняя:

Верхний регистр букв.

: Xdigit:

Символы, которые являются шестнадцатеричными цифрами.

Например, перед стандартом POSIX, чтобы соответствовать буквенно-цифровым символам, вам пришлось б