[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RiminiLUG-General] formattazione di un foglio eletronico (o di un csv)



Ciao Mirco, grazie per la risposta:

Ho provato ad aprire il file originale con base ma sono stato reindirizzato su writer ad un file illeggibile: forse che devo creare prima un database vuoto e importarlo su di esso?
Comunque se fosse come dici tu cambierebbe completamente l'approccio al problema e credo che sarebbe anche più appropriato.

Ivan, non avevo dubbi che awk fosse più potente :-)
Grande, proprio quello che volevo.
Grazie mille!
Ora cerco di capire cosa hai scritto e mi rifaccio vivo :-D
E' possibile fare il tutto in un operazione sola? ossia inglobare sed nello script?

Andrea

Il giorno 11 novembre 2011 18:13, Ivan tarozzi <ivan@xxxxxxxxxxxx> ha scritto:
On 11/11/2011 14:38, BELLEROFONTE wrote:
[cut]

Ho creato uno script:

#! /bin/sh
awk -F , '{print $3}' /dati/Scrivania/csvs/prova > /dati/Scrivania/cacca
sed s/\"Name\"// /dati/Scrivania/cacca > /dati/Scrivania/cacca2
sed s/\"NumberGeneral\"// /dati/Scrivania/cacca2 > /dati/Scrivania/cacca3
sed /^$/d /dati/Scrivania/cacca3 > /dati/Scrivania/cacca4

che da come file finale (cacca4) questo:

"file"
"<http://www.gammu.org>"
"Nokia 6230i 03.40"
"Wammu 0.35"
"20111012T212841Z"
"1.05"
1
"pluto"
3331111111
2
"pippo"
3332222222
3
"paperino"
3333333333

Sicuramente so che qualcuno saprà consigliarmi di meglio :-D ( se non
altro nella forma dello script).
Avrei anche una domanda un pò più difficile:
Vorrei trasporre le righe tre a tre in colonne per ottenere un risultato
simile a quello indicato nel mio primo messaggio, ossia:

1 "pluto" 3331111111
2 "pippo" 3332222222
3 "paperino" 3333333333


Ciao Andrea!
tieni presente che awk è molto più potente di come lo hai usato ;)

ci sono tanti modi per fare quello che chiedi; io ho trovato questo:

1. creo un file awk come questo (per sempio bf.awk) e lo rendo eseguibile:
----------------------------------------------------------
#! /usr/bin/awk -f

BEGIN {
FS=","
print "Elenco telefonico"
print "================="
}

{
if ($1 ~ /^Location/ ) printf "%s " , $3
if ($1 ~ /^Entry00Text/ ) printf "%s " , $3
if ($1 ~ /^Entry01Text/ ) printf "%s\n", $3
}

END { print "-------------" }
----------------------------------------------------------

2. gli do in pasto il file csv in questo modo:
sed 's/"//g' nome_file_csv.txt | ./bf.awk

Se poi vuoi salvare il risultato ridirigi semplicemente l'output su file
All'interno del file awk ti puoi tranquillamente sbizzarrire con le formattazioni (io ho fatto solo un esempio...)

Se hai dubbi su quanto trovi scritto qui chiedi pure... il trucco per raggruppare più linee su una sola è usare printf invece di print ;)


Ivan