Você poderia tentar assim:
awk 'NR==1{for (i=1;i<=NF;i++) a[i]=$i; next}
{for (i=1;i<=NF;i++) {print $i > a[i]".txt"}}' infile
Na linha de cabeçalho, isso salva o valor de cada campo em uma matriz e, em seguida, o restante das linhas imprime cada campo para o nome de arquivo correspondente.