Это команда original-awk, которую можно запустить в бесплатном хостинг-провайдере OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.
ПРОГРАММА:
ИМЯ
original-awk - язык сканирования и обработки по шаблонам
СИНТАКСИС
оригинал-awk [ -F fs ] [ -v var = значение ] [ 'прог' | -f прогфайл ] [ файл ... ]
ОПИСАНИЕ
Awk (original-awk) сканирует каждый ввод файл для линий, которые соответствуют любому из набора шаблонов
указано буквально в прог или в одном или нескольких файлах, указанных как -f прогфайл. С каждым
шаблона может быть связанное действие, которое будет выполнено, когда строка файл
соответствует шаблону. Каждая линия сопоставляется с частью шаблона каждого шаблона -
заявление о действии; соответствующее действие выполняется для каждого совпадающего шаблона. Файл
имя - означает стандартный ввод. Любой файл формы var = значение рассматривается как
присвоение, а не имя файла, и выполняется в то время, когда оно было бы открыто, если бы оно
были именем файла. Опция -v последующей var = значение это задание, которое нужно выполнить до
прог выполняется; любое количество -v варианты могут присутствовать. В -F fs опция определяет
разделитель поля ввода должен быть регулярным выражением фс.
Строка ввода обычно состоит из полей, разделенных пробелами или обычными
выражение FS. Поля обозначены $1, $2, ..., в то время как $0 относится ко всей строке.
If FS имеет значение null, строка ввода разбивается на одно поле для каждого символа.
Оператор "шаблон-действие" имеет форму
описания { действие }
Пропавший без вести { действие } означает распечатать строку; отсутствующий шаблон всегда совпадает. Шаблон-
Операторы действия разделяются новой строкой или точкой с запятой.
Действие - это последовательность утверждений. Утверждение может быть одним из следующих:
если( выражение ) заявлении [ еще заявлении ]
в то время как( выражение ) заявлении
для( выражение ; выражение ; выражение ) заявлении
для( вар in массив ) заявлении
do заявлении в то время как( выражение )
перерыв
продолжать
{[ заявлении ... ]}
выражение # обычно вар = выражение
Распечатать [ список-выражений ] [> выражение ]
Printf формат [, список-выражений ] [> выражение ]
возвращаться [ выражение ]
next # пропустить оставшиеся шаблоны в этой строке ввода
nextfile # пропустить оставшуюся часть этого файла, открыть следующий, начать сверху
удалять массив[ выражение ] # удаляем элемент массива
удалять массив # удалить все элементы массива
выход [ выражение ] # немедленно выйти; статус выражение
Операторы заканчиваются точкой с запятой, новой строкой или правыми фигурными скобками. Пустой выражение-
список стенды для $0. Строковые константы заключаются в кавычки "", при этом распознаются обычные escape-последовательности C
в. Выражения принимают соответствующие строковые или числовые значения и строятся с использованием
операторы + - * / % ^ (возведение в степень) и конкатенация (обозначается пробелом).
Операторы ! ++ -- += -= *= /= %= ^= > >= < <= == != ?: также доступны в
выражения. Переменные могут быть скалярами, элементами массива (обозначенными x[i]) или поля.
Переменные инициализируются нулевой строкой. Индексы массива могут быть любой строкой, но не
обязательно числовой; это позволяет сформировать ассоциативную память. Множественные индексы
как [i, j, k] разрешены; составляющие объединены, разделены значением
of ПОДПИСЬ.
" Распечатать оператор выводит свои аргументы на стандартный вывод (или в файл, если >файл or
>>файл присутствует или на трубе, если |CMD присутствует), разделенные текущим выходным полем
разделитель и завершается разделителем выходной записи. файл и CMD может быть буквальным
имена или выражения в скобках; идентичные строковые значения в разных операторах обозначают
тот же открытый файл. В Printf оператор форматирует свой список выражений в соответствии с
формат (см. Printf(3)). Встроенная функция близко(выраж) закрывает файл или канал выраж.
Встроенная функция fflush (выраж) очищает любой буферизованный вывод для файла или канала выраж.
Математические функции ехр, журнал, SQRT, без, тележкаи атан2 встроены. Прочие встроенные
в функциях:
длина его аргумента, взятого как строка, или $0 если нет аргументов.
все случайное число на (0,1)
сранд закладывает семена для все и возвращает предыдущее семя.
Int усекает до целого числа
substr (s, m, n)
n-символьная подстрока s что начинается с позиции m отсчитывается от 1.
индекс(s, t)
положение в s где строка t происходит, или 0, если нет.
соответствие(s, r)
положение в s где регулярное выражение r происходит, или 0, если нет. В
переменные RСТАРТ и ДЛИНА устанавливаются в положение и длину совпадающих
строка.
расколоть(s, a, fs)
разбивает строку s в элементы массива a[1], a[2], ..., a[n], и возвращается n,
разделение выполняется с помощью регулярного выражения fs или с разделителем полей FS if
fs не дано. Пустая строка в качестве разделителя полей разделяет строку на одну
элемент массива на символ.
sub (r, t, s)
заменители t для первого появления регулярного выражения r в строке s.
If s не дано, $0 используется.
gsub так же, как ниже за исключением того, что заменяются все вхождения регулярного выражения; ниже
и gsub вернуть количество замен.
Sprintf (FMT, выраж, ... )
строка, полученная в результате форматирования выраж ... в соответствии с Printf(3) формат
FMT
система(CMD)
исполняет CMD и возвращает статус выхода
снизить(ул)
возвращает копию ул со всеми символами верхнего регистра, переведенными на их
соответствующие строчные эквиваленты.
toupper (ул)
возвращает копию ул со всеми символами нижнего регистра, переведенными на их
соответствующие эквиваленты в верхнем регистре.
`` Функция '' Getline Наборы $0 к следующей входной записи из текущего входного файла;
Getline <файл Наборы $0 к следующей записи от файл. Getline x устанавливает переменную x .
Наконец, CMD | Getline трубы выход CMD в Getline; каждый звонок Getline Возвращает
следующая строка вывода из CMD. В любом случае, Getline возвращает 1 при успешном вводе,
0 для конца файла и -1 для ошибки.
Шаблоны - это произвольные логические комбинации (с ! || &&) регулярных выражений и
реляционные выражения. Регулярные выражения такие, как в задать расширенное; увидеть GREP(1). Изолированные
регулярные выражения в шаблоне применяются ко всей строке. Регулярные выражения также могут
встречаются в выражениях отношения, используя операторы ~ и !~. /re/ постоянный регулярный
выражение; любая строка (константа или переменная) может использоваться как регулярное выражение, кроме
в позиции изолированного регулярного выражения в шаблоне.
Шаблон может состоять из двух шаблонов, разделенных запятой; в этом случае действие
выполняется для всех строк, начиная с появления первого шаблона, несмотря на появление
секунда.
Выражение отношения может быть одним из следующих:
выражение матчоп регулярное выражение
выражение перевернуть выражение
выражение in имя-массива
(выраж,expr, ...) in имя-массива
где relop - это любой из шести операторов отношения в C, а matchop - это либо ~
(совпадения) или !~ (не соответствует). Условное выражение - это арифметическое выражение, относительное
выражение или их логическое сочетание.
Особые узоры НАЧАТЬ и END может использоваться для захвата управления перед первым вводом
строка читается и после последней. НАЧАТЬ и END не сочетаются с другими узорами.
Имена переменных со специальными значениями:
КОНВФМТ
формат преобразования, используемый при преобразовании чисел (по умолчанию % .6 г)
FS регулярное выражение, используемое для разделения полей; также устанавливается по выбору -Fфс.
NF количество полей в текущей записи
NR порядковый номер текущей записи
FNR порядковый номер текущей записи в текущем файле
ИМЯ ФАЙЛА
имя текущего входного файла
RS разделитель входных записей (новая строка по умолчанию)
ОФС разделитель поля вывода (по умолчанию пусто)
ORS разделитель выходной записи (новая строка по умолчанию)
ОФМТ выходной формат для чисел (по умолчанию % .6 г)
ПОДПИСЬ разделяет несколько нижних индексов (по умолчанию 034)
АРГК количество аргументов, назначаемое
АРГВ массив аргументов, назначаемый; ненулевые члены считаются именами файлов
ОКРУЖАЮЩАЯ СРЕДА
массив переменных окружения; нижние индексы - имена.
Функции могут быть определены (в позиции оператора "шаблон-действие") следующим образом:
функция фу (а, b, c) { ...; возвращают x }
Параметры передаются по значению, если скалярный, и по ссылке, если имя массива; функции могут быть
вызывается рекурсивно. Параметры являются локальными для функции; все остальные переменные глобальные.
Таким образом, локальные переменные могут быть созданы путем предоставления дополнительных параметров в функции
определение.
ПРИМЕРЫ
длина ($ 0)> 72
Печатайте строки длиной более 72 символов.
{print $ 2, $ 1}
Напечатайте первые два поля в обратном порядке.
НАЧАТЬ {FS = ", [\ t] * | [\ t] +"}
{print $ 2, $ 1}
То же самое, с полями ввода, разделенными запятой и / или пробелами и табуляциями.
{s + = 1 доллар США}
КОНЕЦ {выведите "сумма", с, "в среднем", с / NR}
Сложите первый столбец, выведите сумму и среднее значение.
/ старт /, / стоп /
Выведите все строки между парами старт / стоп.
НАЧАТЬ {# Simulate эхо(1)
for (i = 1; i <ARGC; i ++) printf "% s", ARGV [i]
printf "\ n"
выход }
Используйте original-awk в Интернете с помощью сервисов onworks.net