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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow