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