Как писать команды и скрипты AWK

Команды, синтаксис и примеры

Команда awk – это мощный метод обработки или анализа текстовых файлов, в частности файлов данных, организованных по строкам (строкам) и столбцам.

Простые команды awk могут быть запущены из командной строки. Более сложные задачи должны быть записаны в виде awk-программ (так называемых awk-скриптов) в файл.

Основной формат команды awk выглядит следующим образом:

 awk 'pattern {action}' input-file> output-file 

Это означает: взять каждую строку входного файла; если строка содержит шаблон, примените действие к строке и запишите полученную строку в выходной файл. Если шаблон не указан, действие применяется ко всей строке. Например:

 awk '{print $ 5}' table1.txt> output1.txt 

Этот оператор берет элемент 5-го столбца каждой строки и записывает его в виде строки в выходной файл «output.txt». Переменная «$ 4» относится ко второму столбцу. Точно так же вы можете получить доступ к первому, второму и третьему столбцам, используя $ 1, $ 2, $ 3 и т. Д. По умолчанию предполагается, что столбцы разделены пробелами или табуляцией (так называемый пробел). Итак, если входной файл “table1.txt” содержит эти строки:

 1, Джастин Тимберлейк, Название 545, Цена 7,30 $ 
2, Тейлор Свифт, Название 723, Цена 7,90 $
3, Мик Джаггер, Название 610, Цена 7,90 $
Lady Gaga, Название 118, Цена 7,30 $
5, Джонни Кэш, Название 482, Цена 6,50 $
6, Элвис Пресли, Название 335, Цена 7,30 $ 7, Джон Леннон, Название 271, Цена 7,90 $ > 8, Майкл Джексон, название 373, цена $ 5,50

Затем команда записывает следующие строки в выходной файл «output1.txt»:

 545, 
723,
610,
118,
482,
335,
271,
373,

Если разделитель столбцов отличается от пробелов или табуляций, таких как запятая, вы можете указать это в выражении awk следующим образом:

 awk -F, '{print $ 3}' table1.txt> output1.txt 

Это выберет элемент из столбца 3 каждой строки, если столбцы считаются разделенными запятой. Следовательно, результат в этом случае будет:

 Название 545 
Название 723
Название 610
Название 118
Название 482
Название 335
Название 271
Название 373

Список операторов внутри фигурных скобок (‘{‘, ‘}’) называется блоком. Если вы поместите условное выражение перед блоком, оператор внутри блока будет выполнен, только если условие истинно.

 awk '$ 7 == "\ $ 7.30" {print $ 3}' table1.txt 

В этом случае условие равно $ 7 == “\ $ 7.30”, что означает, что элемент в столбце 7 равен $ 7.30. Обратная косая черта перед знаком доллара используется для предотвращения интерпретации системой $ 7 как переменной и вместо этого буквально воспринимает знак доллара.

Таким образом, этот оператор awk выводит элемент в 3-м столбце каждой строки, который имеет «7,30» в столбце 7.

Вы также можете использовать регулярные выражения в качестве условия. Например:

 awk '/ 30/{print $ 3}' table1.txt 

Строка между двумя слешами (‘/’) является регулярным выражением. В данном случае это просто строка «30». Это означает, что если строка содержит строку «30», система печатает элемент в 3-м столбце этой строки. Вывод в приведенном выше примере будет:

 Тимберлейк, 
Гага,
Пресли,

Если элементы таблицы являются числами, awk может выполнять вычисления на них, как в этом примере:

 awk '{print ($ 2 * $ 3) + $ 7}' 

Помимо переменных, которые обращаются к элементам текущей строки ($ 1, $ 2 и т. Д.), Есть переменная $ 0, которая относится к полной строке (строке), и переменная NF, которая содержит количество полей.

Вы также можете определить новые переменные, как в этом примере:

 awk '{sum = 0; для (col = 1; col <= NF; col ++) sum + = $ col; печать суммы; } '

Это вычисляет и печатает сумму всех элементов каждой строки.

Утверждения Awk часто сочетаются с командами sed.

Оцените статью
Solutics.ru
Добавить комментарий