[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 Ivan,

Il file originale è stato aperto con libreoffice calc e veniva trattato come un csv in quanto mi è stato chiesto che tipo di separatore utilizzare etc etc.
mousepad (editor di xubuntu) apriva un file con una sola riga con scritto "þÿ" :-)

Per farla breve l'ho esportato come csv e ha assunto questa forma:

";","This","file","format","was","designed","for","Gammu","and","is","compatible","with","Gammu+"
,,,,,,,,,,,,
";","See","<http://www.gammu.org>","for","more","info",,,,,,,
,,,,,,,,,,,,
"[Backup]",,,,,,,,,,,,
,,,,,,,,,,,,
"Phone","=","Nokia 6230i 03.40",,,,,,,,,,
,,,,,,,,,,,,
"Creator","=","Wammu 0.35",,,,,,,,,,
,,,,,,,,,,,,
"DateTime","=","20111012T212841Z",,,,,,,,,,
,,,,,,,,,,,,
"Format","=","1.05",,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
"[SIMPBK001]",,,,,,,,,,,,
,,,,,,,,,,,,
"Location","=",1,,,,,,,,,,
,,,,,,,,,,,,
"Entry00Type","=","Name",,,,,,,,,,
,,,,,,,,,,,,
"Entry00Text","=","pluto",,,,,,,,,,
,,,,,,,,,,,,
"Entry01Type","=","NumberGeneral",,,,,,,,,,
,,,,,,,,,,,,
"Entry01Text","=",3331111111,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
"[SIMPBK002]",,,,,,,,,,,,
,,,,,,,,,,,,
"Location","=",2,,,,,,,,,,
,,,,,,,,,,,,
"Entry00Type","=","Name",,,,,,,,,,
,,,,,,,,,,,,
"Entry00Text","=","pippo",,,,,,,,,,
,,,,,,,,,,,,
"Entry01Type","=","NumberGeneral",,,,,,,,,,
,,,,,,,,,,,,
"Entry01Text","=",3332222222,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
"[SIMPBK003]",,,,,,,,,,,,
,,,,,,,,,,,,
"Location","=",3,,,,,,,,,,
,,,,,,,,,,,,
"Entry00Type","=","Name",,,,,,,,,,
,,,,,,,,,,,,
"Entry00Text","=","paperino",,,,,,,,,,
,,,,,,,,,,,,
"Entry01Type","=","NumberGeneral",,,,,,,,,,
,,,,,,,,,,,,
"Entry01Text","=",3333333333,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,
,,,,,,,,,,,,

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

E' possibile?

Andrea

Il giorno 10 novembre 2011 18:43, Ivan tarozzi <ivan@xxxxxxxxxxxx> ha scritto:
On 10/11/2011 17:21, BELLEROFONTE wrote:
[cut]

Il mio problema è questo:
Il file generato dal programma è una sorta di csv formattato in questo modo:

dove vedi della punteggiatura nel file che hai postato ?!?
nel senso che csv sta per "valori separati da virgole" ;)

ad ogni modo, i campi che devi gestire sono solo 2 oppure ci sono anche voci che hanno più entry?

Se l'esempio che hai allegato è rappresentativo, con calc non saprei come farlo, ma forse la cosa più semplice è fare un piccolo script bash o python.
per esempio:
- legge una riga alla volta
- per ogni riga, se inizia con Entry00Text scrivi l'output eleiminando la prima parte della riga
- per ogni riga, se inizia con Entry01Text scrivi l'output eleiminando la prima parte della riga e vai a capo

Se poi il tuo scopo è caricarli con calc, allora l'output lo puoi creare in csv, in modo da essere facilmente formattabile (quindi metti una virgola tra i due campi della linea

Ovviamente se qualcun altro ha una soluzione più elegante si faccia avanti!


Ivan