Один из вариантов - использовать значение IFS с раскрытием переменной:
$ echo Hello! > file.txt
$ IFS=:
$ a=cat:file.txt
$ $a
Hello!
paste
— хороший выбор, если нам просто нужно объединить строки файлов.
Чтобы добавить строку headerс именами файлов, используйте комбинациюawk+paste:
{ 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
Вывод (для 3 входных файлов):
file1 file1 file2 file2 file3 file3
a 1 a 10 a 0
b 2 b 20 b 0
c 3 c 40 c 0
Детали:
{ команда; команда; ...}
- используется для объединения выходных данных нескольких команд
для f в файле*;
- для каждого файла
printf("%s\t",FILENAME)
- печать имя файла для каждого столбца соответствующего файла
exit
- выход сразу после обработки 1-й строки