根据第二列中的匹配,我想要加入两个文本文件。 File1大于file2,包含file2中所有条目的匹配,以及许多不匹配。
加入工作,输出文件按预期加入匹配的条目。但是,我想保留file1中的不匹配条目,以便它们仍然出现在输出文件中。
这两个文件都是制表符分隔的。 File1有13列,file2有4.我在file1的第2列和file2的第1列之间进行匹配。
如何执行此操作,以使file1中不匹配的行仍出现在输出文件(file3)中?
我一直在使用以下代码(bash):
join -t $'\t' -1 2 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10,1.11,1.12,1.13,2.2,2.3,2.4 <(sort -k2,2 file1) <(sort -k1,1 file2) > file3
先谢谢你的帮助,我真的很感激!对于新手问题道歉,我是一名试图提高计算能力的生物学家,学习曲线陡峭。
此致
安东尼
答案 0 :(得分:2)
来自man join
:
-a file_number
In addition to the default output, produce a line for each unpairable line in file file_number.
这似乎正是你想要的。
因此,既然您希望file1中的行也出现在输出中,请在命令中添加-a 1
。
join -a 1 -t $'\t' -1 2 -2 1 -o 1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,1.10,1.11,1.12,1.13,2.2,2.3,2.4 <(sort -k2,2 file1) <(sort -k1,1 file2) > file3