Использование join
и оболочки, которая понимает подстановки процессов:
$ join -t ' ' -1 2 -2 3 -o2.1,0,1.3,1.4,1.5,1.6 <( sort -k2 file1 ) <( tr ',' ' ' <file2 | sort -k3 )
1 rs3094315 0 0 C T
Второй файл, file2
, имеет проблему, заключающуюся в том, что он использует разделитель полей, отличный от первого файла, file1
. Это можно исправить, пропустив его содержимое через tr
и заменив все запятые пробелами.
Затем два файла сортируются по полям, данные по которым мы собираемся объединить; поле 2 в первом файле и поле 3 во втором файле.
Затем join
прочитает эти два набора данных и соединит их в полях, разделенных указанными пробелами -.
Поля вывода определяются флагом -o
, и мы выбираем первое поле второго файла, поле соединения, за которым следуют поля с 3 по 6 из первого файла.
Я нашел решение, по крайней мере я прошёл проблему libtsm.
libtsm был установлен отдельно, но перед запуском./configure его необходимо было связать.
Несмотря на то, что /usr/local/lib был папкой установки, /usr/local/lib/pkgconfig был PKG _CONFIG _PATH, который мне был нужен для export
.
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
./configure
Вот и все.