linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] domanda ignorante bash scripting

Andrea Gelmini andrea.gelmini a linux.it
Gio 17 Maggio 2012 09:07:33 UTC
Il 17 maggio 2012 10:36, Rampage Rmp <atomikramp a gmail.com> ha scritto:
> visto che il file non è un excel, e che la cosa sarà ripetuta per molti file
> analoghi, ho optato per fare uno scriptino in bash (eventualmente valuterò
> python se la cosa non si reisce a fare in maniera agile) piuttosto che usare
> libreoffice calc.

In bash puro ti complichi un po' la vita. Puoi risolverlo dritto da
AWK (che gia' ti offre tutto il necessario).
In Python dovrebbe essere ancora piu' agile (perché ha un modulo dedicato).
Non lo ho provato, ma io scriverei una cosa di questo tipo:

-----------------------------------
#!/usr/bin/python3

import csv

nuovocsv = csv.writer(open('/tmp/nuovo_file.csv', 'w', newline=''),
delimiter=';', quoting=csv.QUOTE_ALL)

with open('file_origine.csv', 'r') as fd:
        reader = csv.reader(fd, delimiter=';', quoting=csv.QUOTE_ALL)
        for riga in reader:
                nuovi_campi=[campo for campo in riga if campo is not None]
                nuovocsv.writerow(nuovi_campi)
------------------------------------

> il problema è.. non ho trovato una guida decente per gestire gli array o le
> liste in bash.. qualcuno mi illumina su come fare? :D

E' nella documentazione ufficiale. Guarda bene. E' lo stesso
meccanismo per il quale passi gli argomenti agli script o alle
funzioni.
n.b.: ma scusa, una banale regexp che faccia il match di una sequenza
tipo ,"", e la collassi con una virgola e basta?

Ciao,
Gelma



Maggiori informazioni sulla lista Lug