Re: aiuto per script
-- On Sunday 05 September 2004 17:46, Ottavio Campana wrote:
> Supponete di avere un file cvs con delle righe fatte così:
>
> 44&52,777359&15,967115&48,354073&16,217337&36,221742&15,562759&22,9
>94321&20,403053\\
>
> come fareste per fare in modo che per ogni valore, escluso quello
> della prima colonna che è un indice, vengano tenuti due numeri dopo
> la virgola?
>
> Vorrei che diventasse così:
>
> 44&52,77&15,96&48,35&16,21&36,22&15,56&22,99&20,40 \\
>
> se poi a destra e sinistra dell'& ci fosse pure uno spazio,
> oteenendo quindi
>
> 44 & 52,77 & 15,96 & 48,35 & 16,21 & 36,22 & 15,56 & 22,99 & 20,40
> \\
>
> sarebbe il massimo.
>
> Avete idee?
>
> Ciao e grazie
Usando "sed" e le "regular expressions" direttamente da Bash si può
fare così, in una sola riga:
$ cat prova_in
44&52,777359&15,967115&48,354073&16,217337&36,221742&15,562759&22,994321&20,403053\\
$ cat prova_in | sed 's/&\([0-9]\+,[0-9]\{2\}\)[0-9]\+/ \& \1/g'
44 & 52,77 & 15,96 & 48,35 & 16,21 & 36,22 & 15,56 & 22,99 & 20,40\\
$
Se non hai bisogno di fare approssimazioni potrebbe andare bene.
Saluti,
alfredo
Reply to: