我有以下三個文件缺少值:填寫從第二或第三文件(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