第一个文件(制表符分隔)是
1 2 3
b 6 7 8
c 9 0 9
第二个文件(制表符分隔)是
a_rna_1 r r x
a_rna_2 q q d
a_rna_3 c c c
b_rna_1 e e e
c_rna_1 a a g
我们如何合并这两个文件以获得以下文件?
a 1 2 3 a_rna_1 r r x
a 1 2 3 a_rna_2 q q d
a 1 2 3 a_rna_3 c c c
b 6 7 8 b_rna_1 e e e
c 9 0 9 c_rna_1 a a g
有没有办法让我们自动执行此操作?
通常,
join
命令可以工作,但您没有完全匹配的字段;一个文件中的 a
与另一个文件中以 a_rna_...
开头的内容匹配。因此,最好的办法可能是断开第二个键与第一个键匹配的部分,并将其作为自己的字段添加到第二个文件中,然后加入。所以
像这样的:
join <(sort file1.tsv) <(sed 's/^\(.\)_/\1\t&/' file2.tsv | sort)