iirc :
cat filename.txt | awk '{ print $2 $4 }'
o, come menzionato nei commenti :
awk '{ print $2 $4 }' filename.txt
Puoi usare il cut
comando:
cut -d' ' -f3,5 < datafile.txt
stampe
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495
il
-d' '
- significa, usaspace
come delimitatore-f3,5
- prendi e stampa la 3a e la 5a colonna
Il cut
è molto più veloce per file di grandi dimensioni come soluzione shell pura. Se il tuo file è delimitato da più spazi bianchi, puoi prima rimuoverli, ad esempio:
sed 's/[\t ][\t ]*/ /g' < datafile.txt | cut -d' ' -f3,5
dove (gnu) sed sostituirà qualsiasi tab
o space
caratteri con un singolo space
.
Per una variante - ecco anche una soluzione perl:
perl -lanE 'say "$F[2] $F[4]"' < datafile.txt
Per completezza:
while read -r _ _ one _ two _; do
echo "$one $two"
done < file.txt
Invece di _
una variabile arbitraria (come junk
) può essere utilizzato anche. Il punto è solo estrarre le colonne.
Demo:
$ while read -r _ _ one _ two _; do echo "$one $two"; done < /tmp/file.txt
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495