awk
Modelli e azioni
Ricerca…
introduzione
Un awk consiste di schemi e azioni, racchiuse tra parentesi graffe, da prendere se un modello corrisponde. Lo schema più semplice è il pattern vuoto, che corrisponde a qualsiasi record. L'azione più semplice è l'azione vuota, che è equivalente a { print } , che è, a sua volta, equivalente a { print $0 } . Se sia lo schema che l'azione sono vuoti, awk semplicemente non farà nulla.
Il seguente programma farà semplicemente eco al suo input, ad esempio:
awk '{ print }' /etc/passwd
Poiché { print } è l'azione predefinita e poiché un valore vero corrisponde a qualsiasi record, quel programma potrebbe essere riscritto come:
awk '1' /etc/passwd
Il tipo più comune di pattern è probabilmente un'espressione regolare racchiusa tra le barre. Il seguente programma stamperà tutti i record che contengono almeno due occorrenze successive della lettera o , ad esempio:
awk '/oo+/ { print }' /etc/passwd
Tuttavia, puoi usare espressioni arbitrarie come pattern. Il seguente programma stampa i nomi (campo uno) degli utenti nel gruppo zero (campo quattro), ad esempio:
awk -F: '$4 == 0 { print $1 }' /etc/passwd
Invece di corrispondere esattamente, puoi anche confrontarti con un'espressione regolare. Il seguente programma stampa i nomi di tutti gli utenti di un gruppo con almeno uno zero nel suo id di gruppo:
awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd
Filtra le linee per lunghezza
Questo modello ti consentirà di filtrare le linee a seconda della sua lunghezza
$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
$awk 'length($0) > 4 { print $0 }' file
AAAAA
$
In ogni caso, il pattern consentirà l'esecuzione del prossimo blocco di codice, quindi, poiché l' azione predefinita per AWK sta stampando la riga corrente {print} , vedremo lo stesso risultato quando si esegue questo:
$awk 'length($0) > 4 ' file
AAAAA