通过awk将两个文件合并在一起

通过awk将两个文件合并在一起,awk,merge,match,Awk,Merge,Match,我想我知道如何合并文件。你能帮我告诉我,我的剧本哪里出了问题 输入: 文件1 文件2 输出: 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 112

我想我知道如何合并文件。你能帮我告诉我,我的剧本哪里出了问题

输入:

文件1

文件2

输出:

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,并只打印两个文件中的匹配列和所有列。但它不起作用。
谢谢

如果您可以使用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-11-26-o“2.1 2.2.3 2.4 2.5 2.6 2.7 1.3 1.4”C p.Glu1309AspfsT p.His103 A
APC 5 112835056 ENST0000507379 13 c.001A>c p.Val599Phe p.His103 A

join
命令基于file1的第一列和file2的第六列合并文件。此命令要求对两个文件进行排序输入,这是通过
完成的。如果您可以使用GNU工具,则可以使用
连接
排序
命令合并这两个文件:

$ 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-11-26-o“2.1 2.2.3 2.4 2.5 2.6 2.7 1.3 1.4”C p.Glu1309AspfsT p.His103 A
APC 5 112835056 ENST0000507379 13 c.001A>c p.Val599Phe p.His103 A

join
命令基于file1的第一列和file2的第六列合并文件。此命令要求对两个文件进行排序输入,这是通过
完成的。您能更详细地说明第6列的输出吗?它是如何减少的?请解释一下。你能更详细地说明第六栏的内容吗?它是如何减少的?请解释一下。
$ 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