Вы можете сделать это с помощью комбинации команд sort
и join
. Простой подход -
join -j2 <(sort -k2 file1) <(sort -k2 file2)
но это выглядит немного иначе, чем вы ищете. Он просто показывает общее поле соединения, а затем остальные поля из каждого файла
"1431_at" "3973" 2.52832098784342 "653" 2.14595534191867
"207201_s_at" "1826" 2.41685345240968 "1109" 2.13777517447307
Если вам нужен формат, точно такой, как вы показали, вам нужно указать join
, что выведите таким образом
join -o 1.1,1.2,1.3,2.1,2.2,2.3 -j2 <(sort -k2 file1) <(sort -k2 file2)
, где -o
принимает список спецификаторов FILENUM.FIELDNUM
.
Обратите внимание, что используемый мной синтаксис <()
не относится к POSIX sh, поэтому вам следует отсортировать по временному файлу, если вам нужен синтаксис POSIX sh.