linux user group brescia

immagine del castello

Archivio della mailing list

[LugBS] domanda ignorante bash scripting

Rampage Rmp atomikramp a gmail.com
Gio 17 Maggio 2012 09:56:59 UTC
Grazie Gelma, in realtà è quasi tutto fatto, mi manca solo un passaggio
logico che la mia mente sciocca non riesce a risolvere, ma che sicuramente
è una banalità

dato un array di interi, che può ovviamente variare in lunghezza oltre che
per valori, a fare l'equivalente di un

cat filename | awk -F ';' '{print $1,$2,$3,$4}'

dove 1 2 3 e 4 sono gli int dell'array?

panico :D

Francesco

2012/5/17 Andrea Gelmini <andrea.gelmini a linux.it>

> 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
>
> --
> Info/Lamentele/Segnalazioni: andrea.gelmini a gmail.com
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lugbs.linux.it/pipermail/lug/attachments/20120517/c8e7cb03/attachment.html>


Maggiori informazioni sulla lista Lug