Você pode usar awk aqui:
awk 'FNR==1{ header=$0;next} {print >"file"header}' filexx*
Produzirá um ou mais novos arquivos de concatenação com os mesmos cabeçalhos na primeira linha:
$ cat file1945
Zenon
$ cat file1950
Frank
Church
James
McClure
Bob
Explicações incluindo citações de awk documentação :
A variável predefinida predefinida FNR é o número atual do registro no arquivo atual. awk incrementos FNR cada vez que ler um novo registro (consulte Registros ) . awk redefine FNR para zero toda vez que inicia um novo arquivo de entrada. Então, quando fazemos FNR==1 significa que só tomamos medidas e obtemos essa linha quando é a primeira linha do arquivo atual e salvamos seu conteúdo em uma variável chamada header .
As instruções next awk para parar imediatamente o processamento do registro atual e passar para o próximo registro. Isso significa que nenhuma regra adicional é executada para o registro atual e o restante da ação da regra atual não é executada, portanto, da próxima vez FNR!=1 e isso fará com que awk execute o próximo bloco que é redirecionando o print output (registros / linhas) para o arquivo chamado file#### ( #### irá substituir com o valor da variável header , lembre-se que você precisa ter citado a parte do nome do arquivo que é uma string .
Usamos o redirecionamento single - ' > ' aqui. Quando esse tipo de redirecionamento é usado, o arquivo de saída é apagado antes que a primeira saída seja gravada nele. As gravações subseqüentes no mesmo arquivo de saída não apagam arquivo de saída , mas são anexadas a ele. (Isso é diferente de como você usa redirecionamentos em scripts de shell.) Se arquivo de saída não existir, ele será criado.