Successivo: Sequenze di protezione, Su: Espressioni regolari [Contenuti][Indice]
Un’espressione regolare può essere usata come modello di ricerca racchiudendola tra barre. L’espressione regolare è quindi confrontata con tutto il testo di ogni record (normalmente, basta che corrisponda a una parte qualsiasi del testo per risultare soddisfatta). Per esempio, il seguente programma stampa il secondo campo di ogni record in cui compaia la stringa ‘li’, in qualsiasi parte del record:
$ awk '/li/ { print $2 }' mail-list -| 555-5553 -| 555-0542 -| 555-6699 -| 555-3430
Espressioni regolari possono anche essere usate in espressioni di confronto.
Queste espressioni consentono di specificare le stringhe da riconoscere;
non devono necessariamente comprendere l’intero record corrente. I due
operatori ‘~’ e ‘!~’ confrontano espressioni regolari. Le
espressioni che usano questi operatori possono essere usate come modelli di
ricerca, o nelle istruzioni if
, while
, for
, e do
.
(Vedi la sezione Istruzioni di controllo nelle azioni.)
Per esempio:
exp ~ /regexp/
è verificata se l’espressione exp (intesa come stringa) corrisponde a regexp. L’esempio che segue individua, o sceglie, tutti i record in input in cui la lettera maiuscola ‘J’ è presente da qualche parte nel primo campo:
$ awk '$1 ~ /J/' inventory-shipped -| Jan 13 25 15 115 -| Jun 31 42 75 492 -| Jul 24 34 67 436 -| Jan 21 36 64 620
Lo stesso risultato si può ottenere anche così:
awk '{ if ($1 ~ /J/) print }' inventory-shipped
Il prossimo esempio chiede che l’espressione exp (intesa come stringa) NON corrisponda a regexp:
exp !~ /regexp/
L’esempio che segue individua o sceglie tutti i record in input il cui primo campo NON contiene la lettera maiuscola ‘J’:
$ awk '$1 !~ /J/' inventory-shipped -| Feb 15 32 24 226 -| Mar 15 24 34 228 -| Apr 31 52 63 420 -| May 16 34 29 208 …
Quando una regexp è racchiusa tra barre, come /pippo/
, la chiamiamo
una costante regexp, proprio come 5.27
è una costante
numerica e "pippo"
è una costante [di tipo] stringa.
Successivo: Sequenze di protezione, Su: Espressioni regolari [Contenuti][Indice]