Molto pių facile con awk, perfetto per la gestione delle stringhe<span></span><br><br>Il giorno mercoledė 12 giugno 2013, Sandro Fabbro  ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">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 ;-)<div><br></div><div><div>


#!/bin/bash</div><div><br></div><div>FILE=$1</div><div>count=0</div><div><br></div><div>while read LINE ; do</div><div><br></div><div>code=`echo $LINE | cut -d';' -f1`</div><div>country=`echo $LINE | cut -d';' -f2`</div>


<div>provider=`echo $LINE | cut -d';' -f3`</div><div>base=`echo $LINE | cut -d';' -f4`</div><div>ccomma="${LINE//[^,]}"</div><div><br></div><div>if [ "${#ccomma}" -eq 0 ]; then</div><div>


<br></div><div>        app=`echo $LINE | cut -d';' -f5`</div><div>        echo "$code;$country;$provider;$base$app"</div><div>else</div><div><br></div><div>echo "da prendere la base + la parte indentificata come 4+i usando ccomma come riferimento che parte da 0"</div>


<div><br></div><div>fi</div><div>done < $FILE</div></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Il giorno 12 giugno 2013 23:00, Daniele Forsi <span dir="ltr"><<a href="javascript:_e({}, 'cvml', 'dforsi@gmail.com');" target="_blank">dforsi@gmail.com</a>></span> ha scritto:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Il 12 giugno 2013 15:43, Alessandro Marzini ha scritto:<br>
<div><br>
> devo scrivere un piccolo programma che mi prenda un file di testo cosi<br>
> fatto:<br>
<br>
</div>> 2;AFGHANISTAN;Other;93;<br>
<br>
> e devo riorganizzarlo cosi:<br>
<br>
> 2;AFGHANISTAN;Other;93;<br>
<br>
č giusta? questa č l'unica riga riorganizzata che finisce con un punto e virgola<br>
<div><br>
> Il mio problema č che se uso la fscanf, l'ultimo ciclo mi prende anche il<br>
> valore della riga successiva, cioe' non riesco a dire alla fscanf di<br>
> fermarsi quando arriva a fine riga.<br>
<br>
</div>fscanf ignora un sacco di cose tra cui i caratteri di fine riga e non<br>
gestisce volentieri i campi vuoti come quella riga che ho citato sopra<br>
che finisce con punto e virgola, da cui il consiglio di Fabrizio di<br>
usare fgets+sscanf (ma comunque avresti il problema degli spazi<br>
all'interno delle parole, insomma scanf() e  famiglia sono poco utili<br>
al di fuori dei libri di scuola)<br>
<div><br>
> Estratto del codice:<br>
><br>
> <a href="http://codepad.org/YaolFNjB" target="_blank">http://codepad.org/YaolFNjB</a><br>
<br>
</div>guarda se questo ti č utile<br>
<a href="http://codepad.org/iQAy1mQ8" target="_blank">http://codepad.org/iQAy1mQ8</a><br>
non spezza le righe come nel tuo codice, ma le righe di esempio<br>
vengono trasformate cosė:<br>
<div>111792;AFGHANISTAN;Areeba Mobile;9377<br>
125426;AFGHANISTAN;AT Mobile;9375<br>
125426;AFGHANISTAN;AT Mobile;9378<br>
125426;AFGHANISTAN;AT Mobile;9389<br>
124225;AFGHANISTAN;AWCC Mobile;9370<br>
123768;AFGHANISTAN;Etisalat Mobile;9378<br>
2;AFGHANISTAN;Other;93<br>
111793;AFGHANISTAN;Roshan Mobile;9372<br>
111793;AFGHANISTAN;Roshan Mobile;9379<br>
129491;ALBANIA;OLO;3554249<br>
129491;ALBANIA;OLO;3554250<br>
129491;ALBANIA;OLO;3554251<br>
129491;ALBANIA;OLO;3554252<br>
<br>
</div><span><font color="#888888">--<br>
Daniele Forsi<br>
</font></span><div><div>--<br>
Mailing list info: <a href="http://lists.linux.it/listinfo/gulli" target="_blank">http://lists.linux.it/listinfo/gulli</a><br>
Pagina web del GULLI: <a href="http://www.livorno.linux.it" target="_blank">www.livorno.linux.it</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Sandro Fabbro<br><br>Email: <a href="javascript:_e({}, 'cvml', 'sandrofabbro@gmail.com');" target="_blank">sandrofabbro@gmail.com</a><br>
<span>
      </span>
</div>
</blockquote><br><br>-- <br>Lorenzo Vangi<br>