GNU/Linux >> Tutoriales Linux >  >> Linux

Tomar la enésima columna en un archivo de texto

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, usa space 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

Linux
  1. Cómo agregar texto al final del archivo en Linux

  2. Cómo agregar números de línea a archivos de texto en Linux

  3. ¿Cuál es la mejor manera de sacar un segmento de un archivo de texto?

  4. Bash Script:¿Comprobar si un archivo es un archivo de texto?

  5. ¿Adjuntar texto al final de un archivo de texto?

¿Escribir en un archivo .txt?

¿Cómo guardar la salida de este comando awk en un archivo?

¿Cómo agrego texto a un archivo?

¿Cómo dividir un archivo de texto en varios archivos *.txt?

Cómo crear un archivo aleatorio .txt (texto legible por humanos como ascii) en Linux

formato de archivo de contraseña ldapsearch