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

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: