Як писати команди та скрипти AWK
Команда awk є потужним методом для обробки або аналізу текстових файлів. Зокрема, він аналізує файли даних, організовані за рядками (рядками) і стовпцями. Прості команди awk можна запускати з командний рядок. Більш складні завдання слід записувати як програми awk (так звані awk скрипти) у файл.

Основи AWK
Основний формат команди awk виглядає так:
awk 'шаблон {дія}' вхідний файл > вихідний файл
Це означає: взяти кожен рядок вхідного файлу; якщо рядок містить шаблон, застосувати дію до рядка та записати отриманий рядок у вихідний файл. Якщо шаблон пропущено, дія застосовується до всіх рядків. Наприклад:
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 дол
4, Леді Гага, титул 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
Список операторів у фігурних дужках ('{','}') називається блоком. Якщо поставити а умовний вираз перед блоком, оператор всередині блоку буде виконуватися, тільки якщо умова істинна.
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-му стовпці цього рядка. The вихід у наведеному вище прикладі буде:
Тімберлейк,
Гага,
Преслі,
Виконайте обчислення в AWK
Якщо елементи таблиці є числами, awk може виконувати для них обчислення, як у цьому прикладі:
awk '{print ($2 * $3) + $7 }'
Окрім змінних, які звертаються до елементів поточного рядка ($1, $2 тощо), існує змінна $0, яка відноситься до повного рядка (рядка), і змінна NF, яка містить кількість полів.
Ви також можете визначити нові змінні, як у цьому прикладі:
awk '{sum=0; для (col=1; col<=NF; col++) сума += $col; надрукувати суму; }'
Це обчислює та друкує суму всіх елементів кожного рядка.
Оператори awk часто поєднуються з командами sed.