Precedente: Campo intera riga, Su: Separatori di campo [Contenuti][Indice]
È importante ricordare che quando si assegna una costante stringa
come valore di FS
, questa subisce una normale elaborazione di stringa
da parte di awk
. Per esempio, con Unix awk
e
gawk
, l’assegnamento ‘FS = "\.."’ assegna la stringa di
caratteri ".."
a FS
(la barra inversa è tolta). Questo crea un’espressione regolare
che significa “i campi sono separati da ricorrenze di due caratteri
qualsiasi”. Se invece si vuole che i campi siano separati da un punto
seguito da un qualsiasi carattere singolo, si deve usare ‘FS = "\\.."’.
Il seguente elenco riassume come i campi vengono divisi, in base al valore
di FS
(‘==’ significa “è uguale a”):
FS == " "
I campi sono separati da serie di spazi vuoti. Gli spazi vuoti iniziale e finale sono ignorati. Questo è il comportamento di default.
FS == qualsiasi altro carattere singolo
I campi sono separati da ogni ricorrenza del carattere. Ricorrenze successive multiple delimitano campi vuoti, e lo stesso fanno le ricorrenze iniziali e finali del carattere. Il carattere può essere anche un metacarattere di espressione regolare, che non è necessario proteggere.
FS == espressione regolare
I campi sono separati da ricorrenze di caratteri che corrispondono alla espressione regolare. Corrispondenze iniziali e finali della regexp delimitano campi vuoti.
FS == ""
Ogni sinngolo carattere nel record diventa un campo separato. (Questa è un’estensione comune; non è specificata dallo standard POSIX.)
FS e IGNORECASE
La variabile FS = "c" IGNORECASE = 1 $0 = "aCa" print $1 L’output è ‘aCa’. Se si vuol veramente dividere i campi su un carattere
alfabetico ignorandone il maiuscolo/minuscolo, si deve usare un’espressione
regolare che lo farà in automatico (p.es., ‘FS = "[c]"’). In questo
caso, |
Precedente: Campo intera riga, Su: Separatori di campo [Contenuti][Indice]