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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow