iocalhost.nl // no place like ::1
references Text Processing AWK

AWK

Tekstverwerking per kolom — velden, patronen en rekenen.

Structuur

awk 'PATROON { ACTIE }' bestand

Per regel wordt het patroon getest; matcht het, dan draait de actie. $0 is de hele regel, $1..$n zijn de velden, NF = aantal velden, NR = regelnummer.

Voorbeelden

awk '{ print $1 }' bestand          eerste kolom
awk '{ print $NF }' bestand         laatste kolom
awk 'NR==1' bestand                 alleen regel 1
awk 'NR>1' bestand                  header overslaan
awk '/error/ { print }'             regels met "error"
awk '$3 > 100' bestand              filter op kolomwaarde
awk '{ print NR": "$0 }'            regels nummeren

Velden-scheidingsteken

awk -F, '{ print $2 }' data.csv     comma als scheidingsteken
awk -F: '{ print $1 }' /etc/passwd  gebruikersnamen
awk 'BEGIN{FS="\t"; OFS=","} {print $1,$2}'   tab in, comma uit

Rekenen & aggregeren

awk '{ sum += $1 } END { print sum }'        som van kolom 1
awk '{ s+=$1 } END { print s/NR }'           gemiddelde
awk '{ count[$1]++ } END { for (k in count) print k, count[k] }'
awk 'length > 80'                            regels langer dan 80 tekens

BEGIN / END

BEGIN { } draait vóór de eerste regel (headers, init), END { } na de laatste (totalen). Variabelen hoeven niet gedeclareerd.