"Важно: 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
редактировал заранее.
Редактировать: man join
объясняет переключатель -o
(как и онлайн-справочную страницу, на которую я указал выше). Он определяет поля для вывода (1.2 означает 2-е поле из файла 1, & c) или 0 для обозначения поля соединения и представляет собой список через запятую. (На самом деле я не помню значение 0, поэтому изначально давал неуклюжее решение, требующее пост-обработки awk, но текущее решение лучше ... и не нужно awk!)