在unix中合并两个文件,其中一个公共列是冗余的

在unix中合并两个文件,其中一个公共列是冗余的

我有两个文件,它们有一个冗余的公共列。文件 1 有染色体位置和 TF,文件 2 有染色体位置和 Refseq 编号。

文件 1:
chr1:66997824-67000456 ZNF333
chr1:66997824-67000456 EGR1 chr1
:66997824-67000456 MZF-1
chr22:51221989-51222166 Zic2
chr22:51221989-51222166 ZF5

文件 2:
chr1:66997824-67000456 Refseq#1
chr22:51221989-51222166 Refseq#22

我想合并这两个文件,并创建一个包含三列的新文件,
chr1:66997824-67000456 ZNF333 Refseq#1
chr1:66997824-67000456 EGR1 Refseq#1
chr1:66997824-67000456 MZF-1 Refseq#1
chr22:51221989-51222166 Zic2 Refseq#22
chr22:51221989-51222166 ZF5 Refseq#22

由于染色体位置是多余的,我无法使用 Unix 中的 join 来合并它们 - 有没有办法使用 sed 或 awk 来合并?

答案1

join file1 file2

输出:

chr1:66997824-67000456 ZNF333 引用序列#1
chr1:66997824-67000456 EGR1 引用序列#1
chr1:66997824-67000456 MZF-1 引用序列#1
chr22:51221989-51222166 Zic2 引用序列号#22
chr22:51221989-51222166 ZF5 引用序列号#22

或者

join file1 file2 | awk '{OFS="     ";print $1,$2,$3}'

输出:

chr1:66997824-67000456 ZNF333 引用序列#1
chr1:66997824-67000456 EGR1 引用序列#1
chr1:66997824-67000456 MZF-1 引用序列#1
chr22:51221989-51222166 Zic2 引用序列号#22
chr22:51221989-51222166 ZF5 引用序列号#22

相关内容