Eu tenho um arquivo de texto assim
foo bar baz
1 a alpha
2 b beta
3 c gamma
Posso usar o awk para imprimir determinadas colunas, como 1 e 3, com {print $1, $3}
, mas quero especificar as colunas a serem impressas especificando o cabeçalho da coluna, algo como {print $foo, $baz}
. Isso é útil, portanto, não preciso abrir o arquivo e contar as colunas manualmente para ver qual coluna é qual e não preciso atualizar o script se o número ou a ordem da coluna mudar. Posso fazer isso com o awk (ou outra ferramenta shell)?
fonte
print i
eprint $i
eprint
f [$ i] `instruções no loop, etc. para rastrear o que está acontecendo se isso ajuda.Você pede
awk
, mas você também pode usar uma ferramenta mais especializada para isso:csvtool
.ou
fonte
Supondo que o arquivo seja um arquivo TSV ("valores separados por tabulação"), usando
csvkit
:A saída será CSV formatada corretamente, mas poderá ser facilmente alterada novamente para TSV:
A
-c
opçãocsvcut
também pode receber números e intervalos e também pode ser usada para reorganizar as colunas dos dados de entrada (um recurso que muitas vezes sinto falta nocut
utilitário padrão ).fonte