awk 'NR == 1 { for (i = 1; i <= NF; ++i) h[i] = $i; next }
{ for (i = 2; i <= NF; ++i) print $1, $i >h[i-1] }' file
Este script awk
primeiro salva os cabeçalhos na matriz h
, de forma que h[1]
seja o primeiro cabeçalho, etc.
Para cada uma das outras linhas nos dados de entrada, ele imprimirá a primeira coluna junto com a coluna apropriada no arquivo nomeado corretamente (o nome do arquivo para a coluna i
nos dados será h[i-1]
). / p>
O programa awk
assume que haverá descritores de arquivo suficientes para manter todos os arquivos de saída abertos ao mesmo tempo (pode haver problemas com centenas ou milhares de colunas).
Se o arquivo usar guias para delimitadores, use awk -F '\t' ...
para que os espaços sejam preservados adequadamente nos dados.