Successivo: , Su: Espressioni regolari   [Contenuti][Indice]


3.1 Uso di espressioni regolari

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: , Su: Espressioni regolari   [Contenuti][Indice]