Blog o spletnem programiranju in elektroniki
💬 👤
back Nazaj na blog
Linux

Kako deluje awk

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č.

back Nazaj na blog