Tengo un archivo de texto así
foo bar baz
1 a alpha
2 b beta
3 c gamma
Puedo usar awk para imprimir ciertas columnas, como 1 y 3, con {print $1, $3}, pero quiero especificar las columnas para imprimir especificando el encabezado de la columna, algo así {print $foo, $baz}. Esto es útil para no tener que abrir el archivo y contar las columnas manualmente para ver qué columna es cuál, y no tengo que actualizar el script si cambia el número de columna o el orden. ¿Puedo hacer esto con awk (u otra herramienta de shell)?
fuente

print iandprint $iyprintf [$ i] `declaraciones en el ciclo, etc. para rastrear qué sucede si eso ayuda.Usted pide
awk, pero también se puede utilizar una herramienta más especializada para esto:csvtool.o
fuente
Suponiendo que el archivo es un archivo TSV ("valores separados por tabulaciones"), use
csvkit:La salida tendrá el formato CSV adecuado, pero podría cambiarse fácilmente a TSV:
La
-copcióncsvcuttambién puede tomar números y rangos, y también puede usarse para reorganizar las columnas de los datos de entrada (una característica que a menudo echo de menos en lacututilidad estándar ).fuente