Если входные файлы не отсортированы, необходима явная сортировка. Используя процесс подстановки, оставьте решение простым
#! /bin/sh
# Helper function - join with required parameters
function j {
join -a1 -a2 -oauto -e0 "$@"
}
echo "file1" "file2" "file3"
j <(sort file1) <(sort file2) | j - <(sort file3)
Вывод:
file1 file2 file3
a 3 0 99
b 4 33 0
c 6 7 0
d 0 0 4
e 0 0 9
f 0 56 44
Или с column -t
:
echo "key" "file1" "file2" "file3"
j <(sort file1) <(sort file2) | j - <(sort file3) | column -t
key file1 file2 file3
a 3 0 99
b 4 33 0
c 6 7 0
d 0 0 4
e 0 0 9
f 0 56 44