我有以下三个文件缺少值:填写从第二或第三文件(bash)的
list1.txt
AB0001 COG0593
AB0002 COG0592
AB0003 COG1195
AB0005 COG1005
AB0006 COG5621
AB0007 COG4591
AB0008 COG1136
AB0009 COG0071
AB0010 COG3212
list2.txt
AB0001 COG0593
AB0002 COG0592
AB0003 COG1195
AB0004
AB0005
AB0006 COG5621
AB0007 COG3127
AB0008 COG1136
AB0009 COG0071
AB0010 COG3212
list3.txt
AB0001 COG0593
AB0002 COG0592
AB0003 COG1195
AB0004 COG5146
AB0005 NOG84439
AB0006 COG5621
AB0007 COG0577
AB0008 COG1136
AB0009 COG0071
AB0010 NOG218375
我想用其他列的第2列中的值填充缺失值(来自第一列AB00[01-10]
),其中列表1具有最高优先级,列表2最高,列表3最低优先级。 因此所需的输出将是:
AB0001 COG0593
AB0002 COG0592
AB0003 COG1195
AB0004 COG5146
AB0005 COG1005
AB0006 COG5621
AB0007 COG4591
AB0008 COG1136
AB0009 COG0071
AB0010 COG3212
这意味着列表1应作为基础,如果缺少值,把它从列表2,如果该值也是在列表2失踪,把它从项目list3。
的值被制表符分隔或空格分开吗?你为自己做了什么? – Inian
他们是选项卡分离。我试图寻找它,但我发现的唯一的东西是'comm',它与我想要的相反。我能想象的唯一事情是按照1-2-3的顺序连接列表,使用'awk'删除重复行{if(stored_lines中的$ 1)x = 1;其他打印; stored_lines [$ 1] = 1}''并排序。但是它必须有一个更容易(优先AWK)的解决方案! – rororo