Kako napisati AWK naredbe i skripte
Naredba awk moćna je metoda za obradu ili analizu tekstualnih datoteka. Konkretno, analizira datoteke s podacima koje su organizirane po linijama (redcima) i stupcima. Jednostavne awk naredbe mogu se pokrenuti iz naredbeni redak. Složenije zadatke treba napisati kao awk programe (zvane awk skripte) u datoteku.

Osnove AWK-a
Osnovni format naredbe awk izgleda ovako:
awk 'uzorak {akcija}' ulazna-datoteka > izlazna-datoteka
To znači: uzeti svaki redak ulazne datoteke; ako redak sadrži uzorak, primijenite akciju na redak i zapišite rezultirajući redak u izlaznu datoteku. Ako je uzorak izostavljen, radnja se primjenjuje na sve retke. Na primjer:
awk '{ print $5 }' table1.txt > output1.txt
Gornja izjava uzima element 5. stupca svakog retka i upisuje ga kao redak u izlaznu datoteku "output.txt". Varijabla '$4' odnosi se na četvrti stupac. Slično, možete pristupiti prvom, drugom i trećem stupcu, s $1, $2, $3, itd. Prema zadanim postavkama, pretpostavlja se da su stupci odvojeni razmacima ili tabulatorima (tzv. bijeli prostor). Dakle, ako ulazna datoteka "table1.txt" sadrži ove retke:
1, Justin Timberlake, naslov 545, cijena 7,30 dolara
2, Taylor Swift, naslov 723, cijena 7,90 dolara
3, Mick Jagger, naslov 610, cijena 7,90 dolara
4, Lady Gaga, naslov 118, cijena 7,30 dolara
5, Johnny Cash, naslov 482, cijena 6,50 dolara
6, Elvis Presley, naslov 335, cijena 7,30 dolara
7, John Lennon, naslov 271, cijena 7,90 dolara
8, Michael Jackson, naslov 373, cijena 5,50 dolara
Tada bi naredba napisala sljedeće retke u izlaznu datoteku "output1.txt":
545,
723,
610,
118,
482,
335,
271,
373,
Ako je razdjelnik stupaca nešto drugo osim razmaka ili tabulatora, kao što je zarez, to možete navesti u awk naredbi na sljedeći način:
awk -F, '{ print $3 }' table1.txt > output1.txt
Ovo će odabrati element iz stupca 3 svakog retka ako se smatra da su stupci odvojeni zarezom. Stoga bi izlaz, u ovom slučaju, bio:
Naslov 545
Naslov 723
Naslov 610
Naslov 118
Naslov 482
Naslov 335
Naslov 271
Naslov 373
Uvjetni izrazi u AWK
Popis iskaza unutar vitičastih zagrada ('{','}') naziva se blok. Ako stavite a uvjetni izraz ispred bloka, naredba unutar bloka će se izvršiti samo ako je uvjet istinit.
awk '$7=="\$7.30" { print $3 }' table1.txt
U ovom slučaju, uvjet je $7=="\$7,30", što znači da je element u stupcu 7 jednak $7,30. Obrnuta kosa crta ispred znaka dolara koristi se kako bi se spriječilo da sustav protumači 7 dolara kao varijablu i umjesto toga shvati znak dolara doslovno.
Dakle, ova awk izjava ispisuje element u 3. stupcu svakog retka koji ima "$7,30" u stupcu 7.
Također možete koristiti regularne izraze kao uvjet. Na primjer:
awk '/30/ { print $3 }' table1.txt
Niz između dvije kose crte ('/') je regularni izraz. U ovom slučaju, to je samo niz "30". To znači da ako redak sadrži niz "30", sustav ispisuje element u 3. stupcu tog retka. The izlaz u gornjem primjeru bi bilo:
Timberlake,
Gaga,
Presley,
Izvršite izračune u AWK
Ako su elementi tablice brojevi, awk može na njima izvoditi izračune kao u ovom primjeru:
awk '{ print ($2 * $3) + $7 }'
Osim varijabli koje pristupaju elementima trenutnog retka ($1, $2, itd.), postoji varijabla $0 koja se odnosi na cijeli red (redak), te varijabla NF koja zadržava broj polja.
Također možete definirati nove varijable kao u ovom primjeru:
awk '{ zbroj=0; za (kol=1; col<=NF; col++) zbroj += $col; ispisati zbroj; }'
Time se izračunava i ispisuje zbroj svih elemenata svakog retka.
awk izjave se često kombiniraju sa sed naredbama.