iirc :
cat filename.txt | awk '{ print $2 $4 }'
o, como se menciona en los comentarios:
awk '{ print $2 $4 }' filename.txt
Puedes usar el cut
comando:
cut -d' ' -f3,5 < datafile.txt
impresiones
1657 19.6117
1410 18.8302
3078 18.6695
2434 14.0508
3129 13.5495
el
-d' '
- significa, usaspace
como delimitador-f3,5
- tomar e imprimir las columnas 3 y 5
El cut
es mucho más rápido para archivos grandes como una solución de shell pura. Si su archivo está delimitado con varios espacios en blanco, puede eliminarlos primero, como:
sed 's/[\t ][\t ]*/ /g' < datafile.txt | cut -d' ' -f3,5
donde el (gnu) sed reemplazará cualquier tab
o space
caracteres con un solo space
.
Para una variante, aquí también hay una solución perl:
perl -lanE 'say "$F[2] $F[4]"' < datafile.txt
En aras de la exhaustividad:
while read -r _ _ one _ two _; do
echo "$one $two"
done < file.txt
En lugar de _
una variable arbitraria (como junk
) también se puede utilizar. El punto es simplemente extraer las columnas.
Demostración:
$ 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