Nel file prova.txt sono presenti alcune coppie di valori: il primo elemento è una data, il secondo un elemento numerico con decimali

03/11/2014 1.00
06/11/2014 0.96
10/11/2014 1.08
27/11/2014 0.95

Volevo riordinare i dati ed ottenere un output come il seguente:

   03/11/2014   06/11/2014   10/11/2014   27/11/2014
         1.00         0.96         1.08         0.95

Per fare ciò ho utilizzato il seguente script:

awk '{ data[NR] = $1; valore[NR] = $2 } 
       END { 
         printf("\n\n");

         printf("%-15s", "")
         for (i = 1; i <= NR; i++)
           printf("%15d", data[i])
         printf("\n\n")

         printf("%-15s", "")
         for (i = 1; i <= NR; i++)
           printf("%15d", valore[i])
       }' prova.txt > prova_riordinata.txt

Il punto è che nel file di output delle date viene riportato solo il giorno e dei valori numerici non sono riportati i decimali; mi sono convinto che il problema sia la sintassi di printf: ho cercato in rete ma non ho le competenze sufficienti per venirne a capo. Potete aiutarmi?

chiesto 15 Nov '14, 00:52

piccolo%20principiante's gravatar image

piccolo prin...
157132027

modificato 15 Nov '14, 00:53


@piccolo-principiante: per stampare le date devi considerarle come stringhe e non numeri, quindi devi usare la sintassi

printf("%15s", data[i])

Per il dato numerico, puoi stamparlo anch'esso come stringa se vuoi che sia stampato esattamente così com'è, oppure puoi usare la sintassi

printf("%15.2f", valore[i])

dove la 'f' indica floating point, cioè numero con la virgola, e il '.2' indica il numero di cifre decimali desiderate.

coll. permanente

ha risposto 15 Nov '14, 08:36

enzotib's gravatar image

enzotib ♦♦
14.0k112186

Grazie enzotib: rapido, chiaro, puntuale... come al solito!

(15 Nov '14, 18:05) piccolo prin... piccolo%20principiante's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×93
×48

domanda posta: 15 Nov '14, 00:52

domanda visualizzata: 944 volte

ultimo aggiornamento: 15 Nov '14, 18:05

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.