AWK - Espressioni regolari

AWK è molto potente ed efficiente nella gestione delle espressioni regolari. Numerose attività complesse possono essere risolte con semplici espressioni regolari. Qualsiasi esperto della riga di comando conosce la potenza delle espressioni regolari.

Questo capitolo tratta le espressioni regolari standard con esempi appropriati.

Punto

Corrisponde a qualsiasi carattere singolo tranne il carattere di fine riga. Ad esempio, il seguente esempio corrisponde afin, fun, fan eccetera.

Esempio

[jerry]$ echo -e "cat\nbat\nfun\nfin\nfan" | awk '/f.n/'

Eseguendo il codice sopra, ottieni il seguente risultato:

Produzione

fun
fin
fan

Inizio della linea

Corrisponde all'inizio della linea. Ad esempio, il seguente esempio stampa tutte le righe che iniziano con patternThe.

Esempio

[jerry]$ echo -e "This\nThat\nThere\nTheir\nthese" | awk '/^The/'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

There
Their

Fine della riga

Corrisponde alla fine della riga. Ad esempio, il seguente esempio stampa le righe che terminano con la letteran.

Esempio

[jerry]$ echo -e "knife\nknow\nfun\nfin\nfan\nnine" | awk '/n$/'

Produzione

Eseguendo questo codice, ottieni il seguente risultato:

fun
fin
fan

Corrisponde al set di caratteri

Viene utilizzato per abbinare solo uno su diversi caratteri. Ad esempio, il seguente esempio corrisponde a patternCall e Tall ma no Ball.

Esempio

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[CT]all/'

Produzione

Eseguendo questo codice, ottieni il seguente risultato:

Call
Tall

Set esclusivo

Nell'insieme esclusivo, il carato nega l'insieme di caratteri tra parentesi quadre. Ad esempio, viene stampato solo il seguente esempioBall.

Esempio

[jerry]$ echo -e "Call\nTall\nBall" | awk '/[^CT]all/'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

Ball

Alterazione

Una barra verticale consente di eseguire l'OR logico delle espressioni regolari. Ad esempio, viene stampato il seguente esempioBall e Call.

Esempio

[jerry]$ echo -e "Call\nTall\nBall\nSmall\nShall" | awk '/Call|Ball/'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

Call
Ball

Zero o una ricorrenza

Corrisponde a zero o una occorrenza del carattere precedente. Ad esempio, il seguente esempio corrisponde aColour così come Color. Noi abbiamo fattou come carattere opzionale utilizzando ?.

Esempio

[jerry]$ echo -e "Colour\nColor" | awk '/Colou?r/'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

Colour
Color

Zero o più occorrenze

Corrisponde a zero o più occorrenze del carattere precedente. Ad esempio, il seguente esempio corrisponde aca, cat, catt, e così via.

Esempio

[jerry]$ echo -e "ca\ncat\ncatt" | awk '/cat*/'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

ca
cat
catt

Una o più occorrenze

Corrisponde a una o più occorrenze del carattere precedente. Ad esempio, l'esempio seguente corrisponde a una o più occorrenze di2.

Esempio

[jerry]$ echo -e "111\n22\n123\n234\n456\n222"  | awk '/2+/'

Eseguendo il codice sopra, ottieni il seguente risultato:

Produzione

22
123
234
222

Raggruppamento

Parentheses ()sono usati per il raggruppamento e il carattere | è utilizzato per le alternative. Ad esempio, la seguente espressione regolare corrisponde alle righe che contengono entrambiApple Juice or Apple Cake.

Esempio

[jerry]$ echo -e "Apple Juice\nApple Pie\nApple Tart\nApple Cake" | awk 
   '/Apple (Juice|Cake)/'

Eseguendo questo codice, ottieni il seguente risultato:

Produzione

Apple Juice
Apple Cake