mount --bind
ваш / home
в / etc / fstab
с
/mnt/g/common/home /home none bind 0 0
( См. этот вопрос на ServerFault.)
Я понятия не имею, насколько практично иметь / home
в файловой системе NTFS.
Для вашей команды awk не хватает только проверки, был ли ключ из файла1 виден в файле2
awk 'FNR==NR{a[$1]=$2 FS $3;next} $1 in a {print $0, a[$1]}' file2 file1 > output
# ................................^^^^^^^
Использование данных вашего примера:
$ join <(sort file1) <(sort file2)
ARS-BFGL-BAC-10975 0.9303 688423261 1 01/04/2015 0.9983763305 10 21225382
ARS-BFGL-BAC-10975 0.9303 688423263 1 01/04/2015 0.9983763305 10 21225382
ARS-BFGL-BAC-11025 0.9092 688423261 1 01/04/2015 0.9983763305 10 84516867
ARS-BFGL-BAC-11025 0.9092 688423263 1 01/04/2015 0.9983763305 10 84516867
ARS-BFGL-BAC-11193 0.9544 688423261 1 01/04/2015 0.9983763305 1 29303546
ARS-BFGL-BAC-11193 0.9544 688423263 1 01/04/2015 0.9983763305 1 29303546
Похоже, это делает то, что вы от него хотите, за исключением порядка строк в выводе (, который отсортирован здесь, и я не знаю, важно ли это для вас. или нет ).
Поле соединения по умолчанию является первым полем, поэтому -j 1
не требуется (это расширение GNU join
).
Выход по умолчаниюjoin
:«Каждый строка вывода состоит из поля соединения, остальные поля из файла1 а затем оставшиеся поля из файла2" (из руководства OpenBSD ). Это означает, что спецификация поля вывода, которую вы использовали, также не нужна, поскольку она соответствует поведению по умолчанию.
Для sort
-k1
также эквивалентно значению по умолчанию.
Я не знаю, что вызвало сообщение об ошибке, кроме случайного использования sort -c
.