Kuidas kirjutada AWK-käske ja skripte
Käsk awk on võimas meetod tekstifailide töötlemiseks või analüüsimiseks. Eelkõige analüüsib see andmefaile, mis on korraldatud ridade (ridade) ja veergude kaupa. Lihtsaid awk-käske saab käivitada rakendusest käsurida. Keerulisemad ülesanded tuleks kirjutada awk-programmidena (nimetatakse awk-skriptideks) faili.

AWK põhitõed
Awk-käsu põhivorming näeb välja järgmine:
awk 'muster {action}' input-file > output-file
See tähendab: võtke sisendfaili iga rida; kui rida sisaldab mustrit, rakendage tegevus reale ja kirjutage saadud rida väljundfaili. Kui muster jäetakse välja, rakendatakse toiming kõigile ridadele. Näiteks:
awk '{ print $5 }' table1.txt > output1.txt
Ülaltoodud lause võtab iga rea 5. veeru elemendi ja kirjutab selle reana väljundfaili "output.txt". Muutuja '$4' viitab neljandale veerule. Samamoodi pääsete juurde esimesele, teisele ja kolmandale veerule, kus on $1, $2, $3 jne. Vaikimisi eeldatakse, et veerud on eraldatud tühikute või tabeldusmärkidega (nn tühik). Seega, kui sisendfail "table1.txt" sisaldab järgmisi ridu:
1, Justin Timberlake, pealkiri 545, hind 7,30 dollarit
2, Taylor Swift, pealkiri 723, hind 7,90 dollarit
3, Mick Jagger, pealkiri 610, hind 7,90 dollarit
4, Lady Gaga, pealkiri 118, hind 7,30 dollarit
5, Johnny Cash, pealkiri 482, hind 6,50 dollarit
6, Elvis Presley, pealkiri 335, hind 7,30 dollarit
7, John Lennon, pealkiri 271, hind 7,90 dollarit
8, Michael Jackson, pealkiri 373, hind 5,50 dollarit
Seejärel kirjutaks käsk väljundfaili "output1.txt" järgmised read:
545,
723,
610,
118,
482,
335,
271,
373,
Kui veeru eraldaja on midagi muud peale tühikute või tabeldusmärkide, näiteks koma, saate selle awk-lauses määrata järgmiselt.
awk -F, '{ print $3 }' table1.txt > output1.txt
See valib elemendi iga rea veerust 3, kui loetakse veerud komaga eraldatuks. Seetõttu oleks antud juhul väljund järgmine:
Pealkiri 545
Pealkiri 723
Pealkiri 610
Pealkiri 118
Pealkiri 482
Pealkiri 335
Pealkiri 271
Pealkiri 373
Tingimuslikud avaldised AWK-s
Lokkis sulgudes ('{','}') olevat lausete loendit nimetatakse plokiks. Kui paned a tingimuslik väljend ploki ees täidetakse ploki sees olev avaldus ainult tingimusel, et see on tõene.
awk '$7=="\$7.30" { print $3 }' table1.txt
Sel juhul on tingimus $7=="\$7.30", mis tähendab, et 7. veerus olev element võrdub 7.30 $. Dollarimärgi ees olevat kaldkriipsu kasutatakse selleks, et süsteem ei tõlgendaks 7 dollarit muutujana ja selle asemel võtaks dollarimärki sõna-sõnalt.
Nii et see awk-lause prindib välja iga rea 3. veerus oleva elemendi, mille 7. veerus on "7,30 dollarit".
Tingimusena saate kasutada ka regulaaravaldisi. Näiteks:
awk '/30/ { print $3 }' table1.txt
Kahe kaldkriipsu ("/") vaheline string on regulaaravaldis. Sel juhul on see lihtsalt string "30". See tähendab, et kui rida sisaldab stringi "30", prindib süsteem välja selle rea 3. veerus oleva elemendi. The väljund ülaltoodud näites oleks järgmine:
Timberlake,
Gaga,
Presley,
Tehke arvutused AWK-s
Kui tabeli elemendid on numbrid, saab awk teha nende põhjal arvutusi nagu selles näites:
awk '{ print ($2 * $3) + $7 }'
Lisaks muutujatele, mis pääsevad juurde praeguse rea elementidele ($1, $2 jne), on muutuja $0, mis viitab tervele reale (reale), ja muutuja NF, mis kehtib väljade arvu kohta.
Samuti saate määratleda uusi muutujaid nagu selles näites:
awk '{ summa=0; jaoks (veerg = 1; col<=NF; veerg++) summa += $col; trükisumma; }'
See arvutab ja prindib iga rea kõigi elementide summa.
Awk-lauseid kombineeritakse sageli sed-käskudega.