Ukaz awk je orodje ukazne vrstice za obdelavo in analizo besedila, ki deluje po vrsticah in stolpcih. Je krajši zapis programa, ki bere podatke, izbere dele vrstic z njimi operira in izpiše rezultat. Najboljše se izkaže pri obdelavi tabel, dnevnikov in CSV datotek.
awk '{ print $1 }' datoteka.txt
Kaj je awk
Ime awk izhaja iz priimkov treh avtorjev: Aho, Weinberger in Kernighan. Vsako vrstico vstopnega besedila razdeli na polja (stolpce), ki jih ločijo presledki. Polja so dosegljiva kot spremenljivke $1 do $NF, cela vrstica pa kot $0.
Izpis stolpcev
Najpogostejša uporaba awk je izpis določenega stolpca iz besedila. Stolpec 1 je $1, zadnji stolpec pa $NF (number of fields).
cat imena.txt
# izpis: Ana Novak 34
awk '{ print $2 }' imena.txt
# izpis: Novak
awk '{ print $NF }' imena.txt
# izpis: 34
Iskanje po vzorcu
Pred blokom ukazov lahko zapišemo pogoj ali vzorec. Ukazi se izvedejo samo nad vrsticami, ki vzorcem ustrezajo.
awk '/napaka/ { print }' dnevnik.log # izpiše vrstice z besedo napaka
awk '$3 > 30 { print $1, $3 }' imena.txt # vrstice, kjer je 3. stolpec večji od 30
Ločevanje polj
Privzeti ločilec polj je presledek. Za obdelavo CSV datotek ga spremenimo z zastavico -F.
awk -F ';' '{ print $2 }' podatki.csv # polja ločena s podpičjem
Računanje in seštevanje
awk zmore tudi aritmetiko in seštevanje vseh vrstic. Spremenljivka NF je število polj v vrstici, NR pa številka trenutne vrstice.
awk '{ vsota += $3 } END { print vsota }' imena.txt # sešteje 3. stolpec
awk 'END { print NR }' datoteka.txt # izpiše število vrstic
S temi osnovnimi ukazi pokriješ večino vsakdanjih nalog obdelave besedila — izpis stolpcev, filtriranje po vzorcu in enostavno računanje. Kdor se bo želel poglobiti, bo odkril, da awk zmore precej več.