Объединить два файла вместе с помощью awk - PullRequest
0 голосов
/ 23 мая 2018

Я думал, что понимаю, как объединять файлы.Не могли бы вы помочь мне сказать, где проблема в моем скрипте?

INPUT:

file1

 c.001A>C   11  p.His103    A
 c.000A>C   12  p.Thr102    E
 c.111A>C   12  p.Thr102    D

file2

APC 5   112835056   ENST00000507379 13  c.001A>C    p.Val599Phe  
APC 5   112819143   ENST00000257430 9   c.1111G  p.G371X
APC 5   1128395514  ENST00000257430 15  c.001A>C     p.Glu1309AspfsT
APC 5   112838773   ENST00000257430 15  c.000A>C    p.Gln1062Ter

OUTPUT:

APC 5   112835056   ENST00000507379 13  c.001A>C    p.Val59   c.001A>C  11  p.His103    A
APC 5   1128395514  ENST00000257430 15  c.001A>C    p.Glu1    c.001A>C  11  p.His103    A
APC 5   112838773   ENST00000257430 15  c.000A>C    p.Gln10   c.000A>C  12  p.Thr102    E

До сих пор была предпринята попытка следующей строки awk:

awk -F'\t' -v OFS="\t" 'FNR==NR{a[$1]=$1FS$2FS$3FS$4; next} {if ($6 in a) print $0, a[$1]}' file1 file2

Я хотел бы объединить файл file1 column1 с файлом file2 column6 и вывести только совпадения и все столбцы изоба файла.Но это не работает.Спасибо

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Не уверен насчет тайны 6-го поля в выходных данных (также упоминается в комментарии), если это опечатка, то следующее может помочь вам.

awk 'FNR==NR{a[$1]=$0;next} ($(NF-1) in a){print $0,a[$(NF-1)]}' file1  file2
0 голосов
/ 23 мая 2018

Если вы можете использовать инструменты GNU, вы объединяете оба файла с помощью команд join, sort и column:

$ join -1 1 -2 6 -o "2.1 2.2 2.3 2.4 2.5 2.6 2.7 1.3 1.4" <(sort file1) <(sed 's/ \+/ /g' file2 | sort -k6) | column -t
APC  5  112838773   ENST00000257430  15  c.000A>C  p.Gln1062Ter     p.Thr102  E
APC  5  1128395514  ENST00000257430  15  c.001A>C  p.Glu1309AspfsT  p.His103  A
APC  5  112835056   ENST00000507379  13  c.001A>C  p.Val599Phe      p.His103  A

join команда объединяет файлы на основе первого столбцафайла1 и 6-й столбец файла2.Эта команда ожидает отсортированного ввода для обоих файлов, что делается с <(...).Опция -o выводит список всех столбцов, которые вы хотите отобразить.

Обратите внимание, что команда sed удаляет дублирующие пробелы, чтобы получить правильный номер столбца для sort (во 2-м файле).

Наконец column -t красиво отображает поля в стиле столбца.

...