[Gulli] C-onoscete il C?
Sandro Fabbro
sandrofabbro@gmail.com
Mer 12 Giu 2013 23:28:21 CEST
questa è una bozza scritta velocemente in bash manca la parte che ti
compone il secondo caso se riesco faccio ... se qualche buona anima vuole
scrivere il secondo ciclo ben venga ;-)
#!/bin/bash
FILE=$1
count=0
while read LINE ; do
code=`echo $LINE | cut -d';' -f1`
country=`echo $LINE | cut -d';' -f2`
provider=`echo $LINE | cut -d';' -f3`
base=`echo $LINE | cut -d';' -f4`
ccomma="${LINE//[^,]}"
if [ "${#ccomma}" -eq 0 ]; then
app=`echo $LINE | cut -d';' -f5`
echo "$code;$country;$provider;$base$app"
else
echo "da prendere la base + la parte indentificata come 4+i usando ccomma
come riferimento che parte da 0"
fi
done < $FILE
Il giorno 12 giugno 2013 23:00, Daniele Forsi <dforsi@gmail.com> ha scritto:
> Il 12 giugno 2013 15:43, Alessandro Marzini ha scritto:
>
> > devo scrivere un piccolo programma che mi prenda un file di testo cosi
> > fatto:
>
> > 2;AFGHANISTAN;Other;93;
>
> > e devo riorganizzarlo cosi:
>
> > 2;AFGHANISTAN;Other;93;
>
> è giusta? questa è l'unica riga riorganizzata che finisce con un punto e
> virgola
>
> > Il mio problema è che se uso la fscanf, l'ultimo ciclo mi prende anche il
> > valore della riga successiva, cioe' non riesco a dire alla fscanf di
> > fermarsi quando arriva a fine riga.
>
> fscanf ignora un sacco di cose tra cui i caratteri di fine riga e non
> gestisce volentieri i campi vuoti come quella riga che ho citato sopra
> che finisce con punto e virgola, da cui il consiglio di Fabrizio di
> usare fgets+sscanf (ma comunque avresti il problema degli spazi
> all'interno delle parole, insomma scanf() e famiglia sono poco utili
> al di fuori dei libri di scuola)
>
> > Estratto del codice:
> >
> > http://codepad.org/YaolFNjB
>
> guarda se questo ti è utile
> http://codepad.org/iQAy1mQ8
> non spezza le righe come nel tuo codice, ma le righe di esempio
> vengono trasformate così:
> 111792;AFGHANISTAN;Areeba Mobile;9377
> 125426;AFGHANISTAN;AT Mobile;9375
> 125426;AFGHANISTAN;AT Mobile;9378
> 125426;AFGHANISTAN;AT Mobile;9389
> 124225;AFGHANISTAN;AWCC Mobile;9370
> 123768;AFGHANISTAN;Etisalat Mobile;9378
> 2;AFGHANISTAN;Other;93
> 111793;AFGHANISTAN;Roshan Mobile;9372
> 111793;AFGHANISTAN;Roshan Mobile;9379
> 129491;ALBANIA;OLO;3554249
> 129491;ALBANIA;OLO;3554250
> 129491;ALBANIA;OLO;3554251
> 129491;ALBANIA;OLO;3554252
>
> --
> Daniele Forsi
> --
> Mailing list info: http://lists.linux.it/listinfo/gulli
> Pagina web del GULLI: www.livorno.linux.it
>
--
Sandro Fabbro
Email: sandrofabbro@gmail.com
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.linux.it/pipermail/gulli/attachments/20130612/43a07cfa/attachment.html>
Maggiori informazioni sulla lista
Gulli