Ответ 1
"Важно: FILE1 и FILE2 должны быть отсортированы в полях соединения." (от эта онлайн-страница руководства).
Эта проблема # 1. Проблема № 2 хуже: опция -e
плохо документирована - работает только с -o
, например:
$ join -a 1 -a 2 -e'-' -o '0,1.2,2.2' sfile1.txt sfile2.txt
bar 2 -
boo - z
foo 1 x
qux 3 y
где имя префикса s
указывает файлы, которые у меня есть sort
ed заранее.
Изменить: man join
объясняет переключатель -o
(так же, как в онлайн-мануаре, на который я указываю выше). Он указывает поля для вывода (1.2 означает 2-е поле из файла 1, c) или 0 для обозначения поля соединения и представляет собой список, разделенный запятыми. (Я не помню значение 0, на самом деле, поэтому изначально было задано неуклюжее решение, требующее последующей обработки awk, но текущее решение лучше... и не нужно awk!).