giovedì 26 maggio 2011

Prendere solo un numero da una riga

L'altra sera il mio capo mi ha chiesto un pizzico di kung-fu per estrarre solo il numero da un output di questo genere:

label:        18.1 Mb
second label:        100.00 %


Inizialmente, ho suggerito di usare awk:

$ cat file | awk {'print $2'}
18.1
label:

Il problema è che le label potevano contenere spazi (seconda riga). Usare cut era fuori discussione, perché forniva anche gli spazi come output.

Allora ho girato la questione: ci interessano solo i numeri, leviamo tutto il resto!

$ cat file | sed -e 's#[^0-9.]##g'
18.1
100.00

La regular expression dice: tutto ciò che non è un numero o un punto, cancellalo.
Elegante ed efficace.

Nessun commento:

Posta un commento