paste
é uma boa escolha se precisarmos apenas mesclar linhas de arquivos.
Para preceder a linha cabeçalho com nomes de arquivos use a combinação awk + colar :
{ for f in file*; do awk '{ for(i=1;i<=NF;i++) printf("%s\t",FILENAME); exit }' "$f"; done;
echo ""; paste -d"\t" file*; } | column -t
A saída (para 3 arquivos de entrada):
file1 file1 file2 file2 file3 file3
a 1 a 10 a 0
b 2 b 20 b 0
c 3 c 40 c 0
Detalhes:
-
{ command; command; ...}
- usado para combinar saídas de vários comandos -
for f in file*;
- para cada arquivo -
printf("%s\t",FILENAME)
- imprime o nome do arquivo para cada coluna do respectivo arquivo -
exit
- sai imediatamente após o processamento da primeira linha