Ang awk command ay isang malakas na paraan para sa pagproseso o pag-aaral ng mga tekstong file-sa partikular, mga file ng data na nakaayos ayon sa mga linya (mga hilera) at mga haligi.
Simple awk Ang mga utos ay maaaring tumakbo mula sa command line. Ang mas kumplikadong mga gawain ay dapat na nakasulat bilang awk programa (tinatawag na awk script) sa isang file.
Ang pangunahing format ng awk command ay ganito:
awk 'pattern {action}' input-file> output-file
Ang ibig sabihin nito: kunin ang bawat linya ng input file; kung ang linya ay naglalaman ng pattern ilapat ang pagkilos sa linya at isulat ang resultang linya sa output-file. Kung ang pattern ay tinanggal, ang aksyon ay inilalapat sa lahat ng linya. Halimbawa: awk '{print $ 5}' table1.txt> output1.txt Ang pahayag na ito ay tumatagal ng elemento ng ika-5 na haligi ng bawat linya at isinulat ito bilang isang linya sa output file na "output.txt". Ang variable '$ 4' ay tumutukoy sa pangalawang haligi. Katulad nito maaari mong ma-access ang una, pangalawa, at ikatlong haligi, na may $ 1, $ 2, $ 3, atbp. Sa pamamagitan ng default na mga haligi ay ipinapalagay na ihihiwalay ng mga puwang o mga tab (kaya tinatawag na puting espasyo). Kaya, kung ang input file na "table1.txt" ay naglalaman ng mga linyang ito: 1, Justin Timberlake, Titulo 545, Presyo ng $ 7.302, Taylor Swift, Pamagat 723, Presyo ng $ 7.903, Mick Jagger, Pamagat 610, Presyo ng $ 7.904, Lady Gaga, Pamagat 118, Presyo $ 7.305, Johnny Cash, Pamagat 482, Presyo $ 6.506, Elvis Presley, Pamagat 335, Presyo ng $ 7.307, John Lennon, Pamagat 271, Presyo ng $ 7.908, Michael Jackson, Pamagat 373, Presyo ng $ 5.50 Pagkatapos ay isulat ng command ang mga sumusunod na linya sa output file na "output1.txt": 545,723,610,118,482,335,271,373, Kung ang column separator ay isang bagay maliban sa mga puwang o mga tab, tulad ng isang kuwit, maaari mong tukuyin na sa awk na pahayag tulad ng sumusunod: awk -F, '{print $ 3}' table1.txt> output1.txt Pipili nito ang elemento mula sa haligi 3 ng bawat linya kung ang mga hanay ay itinuturing na pinaghihiwalay ng isang kuwit. Samakatuwid ang output, sa kasong ito, ay magiging: Pamagat 545 Pamagat 723 Pamagat 610 Titulo 118 Pamagat 482 Pamagat 335 Pamagat 271 Pamagat 373 Ang listahan ng mga pahayag sa loob ng kulot na mga bracket ('{', '}') ay tinatawag na isang bloke. Kung naglagay ka ng isang kondisyong pagpapahayag sa harap ng isang bloke, ang pahayag sa loob ng bloke ay isasagawa lamang kung ang kalagayan ay totoo. awk '$ 7 == " $ 7.30" {print $ 3}' table1.txt Sa kasong ito, ang kondisyon ay $ 7 == " $ 7.30", na nangangahulugang ang elemento sa haligi 7 ay katumbas ng $ 7.30. Ang backslash sa harap ng dollar sign ay ginagamit upang maiwasan ang sistema sa pagbibigay-kahulugan sa $ 7 bilang isang variable at sa halip kunin ang dollar sign literal. Kaya ang awk na pahayag na ito ay nagpapalabas ng elemento sa ika-3 hanay ng bawat linya na may "$ 7.30" sa haligi 7. Maaari mo ring gamitin ang mga regular na expression bilang kondisyon. Halimbawa: awk '/ 30 / {print $ 3}' table1.txt Ang string sa pagitan ng dalawang slashes ('/') ay ang regular na expression. Sa kasong ito, ito ay lamang ang string "30." Ang ibig sabihin nito kung ang isang linya ay naglalaman ng string na "30", ang sistema ay nagpapalabas ng elemento sa ika-3 hanay ng linya na iyon. Ang output sa halimbawa sa itaas ay magiging: Timberlake, Gaga, Presley, Kung ang mga elemento ng table ay ang mga awk numero ay maaaring magpatakbo ng mga kalkulasyon sa mga ito tulad ng sa halimbawang ito: awk '{print ($ 2 * $ 3) + $ 7}' Bukod sa mga variable na ma-access ang mga elemento ng kasalukuyang hilera ($ 1, $ 2, atbp.) Mayroong variable na $ 0 na tumutukoy sa kumpletong hanay (linya), at ang variable NF na humahawak sa bilang ng mga patlang. Maaari mo ring tukuyin ang mga bagong variable tulad ng sa halimbawang ito: awk '{sum = 0; para sa (col = 1; col <= NF; col ++) sum + = $ col; print sum; } ' Iniipon at ini-print ang kabuuan ng lahat ng mga elemento ng bawat hilera. Ang mga pahayag ng Awk ay madalas na sinamahan ng sed commands.