2010-04-14 23 views
5

Tengo un archivo txt con columnas separadas por pestañas y, en base a ese archivo, deseo crear un archivo nuevo que solo contenga información de algunas de las columnas.¿Cómo imprimir columnas seleccionadas separadas por pestañas?

Esto es lo que tengo ahora:

awk '{ print $1, $5 }' filename > newfilename 

que funciona excepto que cuando la columna 5 contiene espacios 123 Street por ejemplo, sólo se muestra 123 y la calle se considera como otra columna.

¿Cómo puedo lograr lo que intento hacer?

Respuesta

4

Se puede especificar el field separator como pestaña:

awk 'BEGIN { FS = "\t" } ; { print $1, $5 }' filename > newfilename 

O from the command line así:

awk -F"\t" '{ print $1, $5 }' filename > newfilename 
1

¿Qué hay de cortar sencilla COMAND concha?

muy simple, pero hace el trabajo

cut -d "\t" -f 1,5 filename > newfilename 
0

Puede utilizar la sintaxis de Bash de la siguiente manera:

while IFS=$'\t' read -a cols; do 
    printf "%s\t%s\n" "${cols[0]}" "${cols[4]}"; 
done <in.txt> newfile.txt 

Esto ahorrará columnas 1 y 5 separadas por pestañas en el nuevo archivo.

Cuestiones relacionadas