Trasformare un elenco di testo con campi su righe in ASCII delimitato

From RVM Wiki
Jump to navigation Jump to search

Si supponga di avere un elenco del tipo:

€ 69.000,-
5.500 km
11/2003
180 kW / 245 CV
Mercedes-Benz SL 350
Argento metallizzato, Automatico, Benzina, ABS, Airbag, Airbag laterale, Airbag passeggero, Alzacristalli elettrici, Antifurto, Autoradio, Cerchi in lega, Chiusura centralizzata, Climatizzatore
I-41058 VIGNOLA (MO)
3 fotografie

€ 50.000,-
11.000 km
07/2003
180 kW / 245 CV
Mercedes-Benz SL 350
Grigio chiaro metallizzato, Automatico, Benzina, ABS, Adatta a portatori di handicap, Airbag, Airbag laterale, Airbag passeggero, Alzacristalli elettrici, Antifurto, Autoradio, Cerchi in lega, Chiusura centralizzata
I-84025 Eboli - Salerno - Sa

€ 48.000,-
15.000 km
05/2003
0 kW / 0 CV
Mercedes-Benz SL 350
Blu metallizzato, Automatico, Benzina, Fari Xenon, Interni in pelle, Park distance control, Sistema di navigazione
I-100 Roma

Notare che alcuni campi alla fine possono anche mancare, ma i record devono sempre essere separati da una riga bianca o altro..

Si vuole ottenere un file del tipo:

€ 69.000,- ; 5.500 km ; 11/2003
€ 50.000,- ; 11.000 km ; 07/2003
€ 48.000,- ; 15.000 km ; 05/2003

Creare lo script:

cat > prova.awk <<EOFile
#!/usr/bin/awk
# addrs.awk --- simple mailing list program
     
# Records are separated by blank lines.
# Each line is one field.

BEGIN { RS = "" ; FS = "\n" }
     
{
print $1,";",$2,";",$3
}
EOFile

Lanciarlo:

awk -f prova.awk lista

€ 69.000,- ; 5.500 km ; 11/2003
€ 50.000,- ; 11.000 km ; 07/2003
€ 48.000,- ; 15.000 km ; 05/2003

Riferimenti