Похоже, здесь есть несколько проблем.
Во-первых, вы запрашиваете объединение для объединения файлов, используя поле 2 (-j 2
), но из ваших входных данных это выглядит так, как будто вы действительно хотите присоединитьсяв поле 1. Если я беру ваш пример ввода и запускаю:
join -j 2 file1.txt file2.txt
, я не получу вывод, потому что нет соединяемых линий.Сравните это с результатом выполнения:
join file1.txt file2.txt
Что приводит к:
string_1 abc... X...
string_2 bcd... Y...
string_3 cde... Z...
Далее, ваши аргументы -o
выглядят неверно.Опция -o
ожидает один аргумент без пробелов, как в:
-o 1.1,1.2,1.3,2,1
И если мы используем это, мы получим:
$ join -o '1.1,1.2,1.3,2.1' file1.txt file2.txt
string_1 abc... string_1
string_2 bcd... string_2
string_3 cde... string_3
Но этот аргумент все еще выглядит неправильно, потому что ваши входные файлы имеют только два столбца, и вы пытаетесь сослаться на третий столбец в первом файле (1.3
).А поскольку поле 1 является общим полем между двумя входами, на самом деле не имеет смысла включать столбец 2.1
в вывод (так как он будет идентичен 1.1
).Это дает нам:
$ join -o '1.1,1.2,2.2' file1.txt file2.txt
string_1 abc... X...
string_2 bcd... Y...
string_3 cde... Z...
Именно это мы и получим, просто запустив join file1.txt
file2.txt
без аргументов.