Příklad 1:
Mějme textovou databázi předmětů, ze kterých si student při zápisu do semestru vybírá. Jednotlivé položky oddělujeme dvojtečkou. Učitel je v databázi jednoznačně identifikován svým přihlašovacím jménem. Pokud je více než jeden učitel, pak jsou jejich přihlašovací jména oddělena čárkou. Databáze nechť má tento tvar:
P000:3:zk:Architektura počítačů:brandejs P004:2:zk:UNIX:brandejs I011:2:zk:Sémantiky programovacích jazyků: zlatuška
Úkol zní: vypsat obsah databáze v "čitelném" tvaru a převést přihlašovací jméno na příjmení a první písmeno křestního jména. Pro tento účel si vytvořme např. soubor logins s následujícím obsahem:
adelton:Jan:Pazdziora brandejs:Michal:Brandejs kas:Jan:Kasprzak kron:David:Košťál zlatuska:Jiří:Zlatuška
Pro převod přihlašovacího jména na příjmení pak použijeme jednorozměrné pole, kde indexem bude přihlašovací jméno a obsahem zkonstruovaná dvojice příjmení a křestního jména. Pole naplňujeme pouze jednou, a to v části BEGIN. Databáze předmětů nechť se načítá ze standardního vstupu.
... | awk -F':' 'BEGIN { while ( getline <"logins" == 1 ) { logins[$1]=sprintf("%s %1.1s.", $3, $2) } } { pocet=split($5,loginy,",") for (i=1; i <= pocet; i++) {if (i == 1) last = logins[loginy[i]] else last = last ", " logins[loginy[i]]; } printf("%-5s %-50.50s %1s %2s %s\n",$1,$4, $2,$3,last) }'
Příklad 2:
Následujícím programem spočítáme počet všech různých slov v textu:
BEGIN { FS="[^a-zA-Z]" } { for (i=1;i<=NF;i++) words[$i] = "" } END { delete words[""] # prázdné položky nepočítáme for (i in words) sum++ print "V textu bylo " sum " různých slov" }
Příklad 3:
A poslední vzorový program vykonává totéž co příkaz wc:
{words+=NF; chars+=1+length($0)}
END {print NR,words,chars}