Командата awk е мощен метод за обработка или анализиране на текстови файлове - по-специално, файлове с данни, които са организирани от линии (редове) и колони.
прост AWK командите могат да се изпълняват от командния ред. По-сложни задачи трябва да бъдат написани като awk програми (т.нар. Awk скриптове) във файл.
Основният формат на командата awk изглежда така:
awk 'модел {action}' вход-файл 'изходен файл
Това означава: вземете всеки ред от входния файл; ако линията съдържа шаблона, приложете действието към линията и запишете резултантната линия на изходния файл. Ако образецът е пропуснат, действието се прилага за всички линии. Например: awk '{print $ 5}' table1.txt 'výstup1.txt Това изречение взема елемента на 5-та колона на всеки ред и го записва като линия в изходния файл "output.txt". Променливата "$ 4" се отнася до втората колона. По същия начин можете да осъществите достъп до първата, втората и третата колона с $ 1, $ 2, $ 3 и т.н. По подразбиране колоните се приемат като разделени с интервали или раздели (т.нар бяло пространство). Така че, ако входният файл "table1.txt" съдържа следните редове: 1, Джъстин Тимбърлейк, Заглавие 545, Цена 7,30 лв2, Тейлър Суифт, Заглавие 723, Цена $ 7.903, Мик Джагър, Заглавие 610, Цена $ 7.904, Лейди Гага, Заглавие 118, Цена 7,30 лв5, Джони Кеш, заглавие 482, цена $ 6.506, Елвис Пресли, Заглавие 335, Цена 7,30 лв7, Джон Ленън, Дял 271, Цена $ 7.908, Майкъл Джексън, Заглавие 373, Цена $ 5.50 След това командата ще напише следните линии към изходния файл "output1.txt": 545,723,610,118,482,335,271,373, Ако разделителят на колони е нещо различно от интервали или раздели, като запетая, можете да посочите в израза awk както следва: awk -F, '{print $ 3}' tab1.txt> výstup1.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 отпечатва елемента в третата колона на всеки ред, който има "7,30 щ.д." в колона 7. Също така можете да използвате регулярни изрази като условие. Например: awk '/ 30 / {print $ 3}' tab1.txt Връзката между двете наклони ('/') е регулярен израз. В този случай това е само низът "30." Това означава, че ако даден ред съдържа "30", системата отпечатва елемента в третата колона на този ред. Изходът в горния пример ще бъде: Тимбърлейк, Гага, Пресли, Ако елементите на таблицата са номера awk, те могат да извършват изчисления върху тях, както в този пример: awk '{print ($ 2 * $ 3) + $ 7} Освен променливите, които имат достъп до елементи от текущия ред ($ 1, $ 2 и т.н.), има променливата $ 0, която се отнася до пълния ред (линия) и променливата NF, която се държи спрямо броя полета. Можете също така да дефинирате нови променливи, както в този пример: awk '{сума = 0; за (col = 1; col <= NF; col ++) сума + = $ col; печатна сума; } " Това изчислява и отпечатва сумата от всички елементи на всеки ред. Изявленията на Awk често се комбинират със седалкови команди.