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.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s