awk
Patronen en acties
Zoeken…
Invoering
Een awk bestaat uit patronen en acties, ingesloten tussen accolades, die moeten worden genomen als een patroon overeenkomt. Het meest basale patroon is het lege patroon, dat overeenkomt met elk record. De meest basale actie is de lege actie, die gelijk is aan { print } , die op zijn beurt gelijk is aan { print $0 } . Als zowel het patroon als de actie leeg zijn, doet awk gewoon niets.
Het volgende programma echoert eenvoudig zijn invoer, bijvoorbeeld:
awk '{ print }' /etc/passwd
Aangezien { print } de standaardactie is en een echte waarde overeenkomt met elke record, kan dat programma opnieuw worden geschreven als:
awk '1' /etc/passwd
Het meest voorkomende type patroon is waarschijnlijk een reguliere expressie tussen schuine strepen. Het volgende programma drukt alle records af die bijvoorbeeld ten minste twee opeenvolgende exemplaren van de letter o :
awk '/oo+/ { print }' /etc/passwd
U kunt echter willekeurige uitdrukkingen als patronen gebruiken. Het volgende programma drukt bijvoorbeeld de namen (veld één) van gebruikers in groep nul (veld vier) af:
awk -F: '$4 == 0 { print $1 }' /etc/passwd
In plaats van exact te matchen, kunt u ook matchen met een reguliere expressie. Het volgende programma drukt de namen van alle gebruikers in een groep af met ten minste één nul in zijn groeps-ID:
awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd
Lijnen filteren op lengte
Met dit patroon kunt u lijnen filteren afhankelijk van de lengte
$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
$awk 'length($0) > 4 { print $0 }' file
AAAAA
$
Hoe dan ook, het patroon staat toe dat het volgende codeblok wordt uitgevoerd, en omdat de standaardactie voor AWK het afdrukken van de huidige regel {print} , zien we hetzelfde resultaat bij het uitvoeren van dit:
$awk 'length($0) > 4 ' file
AAAAA