使用清單從大型製表符分隔文件中提取行

使用清單從大型製表符分隔文件中提取行

我有一個大型選項卡文件,其中包含 15 列 (FILE1) 和應出現在表中的名稱清單 (FILE2)。問題是該名稱可能出現在 FILE1 的第 4 至 10 列中,且大小寫可能不符。

我想要一個命令來搜尋行中的命中,然後列印整行。最好這不區分大小寫,並且不會列印 FILE2 中的名稱是較大單字的一部分的行。

我已經嘗試過以下方法:

grep -Fwf FILE2 FILE1 > out 
xargs -I {} grep "^{}" FILE1 < FILE2 > out 

第一個只是將 FILE1 複製到 out 中。第二個給出一個空白文件。

我還嘗試了一些awk命令,它們要么給出一個空文件,要么如上所述複製 FILE1。我現在正在努力提高我的 Linux 技能,所以如果可能的話,如果您解釋一下您的方法,我將非常感激。

文件1

tax_id GeneID  Symbol  LocusTag        Synonyms        dbXrefs chromosome      map_location    description     type_of_gene    Symbol_from_nomenclature_authority      Full_name_from_nomenclature_authority Nomenclature_status      Other_designations      Modification_date
7       5692769 NEWENTRY        -       -       -       -       -       Record to support submission of GeneRIFs for a gene not in Gene (Azotirhizobium caulinodans.  Use when strain, subtype, isolate, etc. is unspecified, or when different from all specified ones in Gene.).     other   -       -       -       -       20160818
9       1246500 repA1   pLeuDn_01       -       -       -       -       putative replication-associated protein protein-coding  -       -       -       -       20160813
9       1246501 repA2   pLeuDn_03       -       -       -       -       putative replication-associated protein protein-coding  -       -       -       -       20160716
9       1246502 leuA    pLeuDn_04       -       -       -       -       2-isopropylmalate synthase      protein-coding  -       -       -       -       20160903
9       1246503 leuB    pLeuDn_05       -       -       -       -       3-isopropylmalate dehydrogenase protein-coding  -       -       -       -       20150520
9       1246504 leuC    pLeuDn_06       -       -       -       -       isopropylmalate isomerase large subunit protein-coding  -       -       -       -       20160806
9       1246505 leuD    pLeuDn_07       -       -       -       -       isopropylmalate isomerase small subunit protein-coding  -       -       -       -       20160730
9       1246509 ibp     pBPS1_01        -       -       -       -       Ibp protein     protein-coding  -       -       -       -       20150801
9       1246510 repA1   pBPS1_02        -       -       -       -       repA1 protein   protein-coding  -       -       -       -       20160813

文件2

sacX
arcB
metB
sprT
adrB_2
fadD
trpC
ansP2
group_1428
plsX
repA

答案1

回答在上面評論裡 請參閱@Philippos 和@George Vasiliou 的回复

簡而言之,答案是 grep -Fwf FILE2 FILE1 > out

我遇到了一個問題,然後我執行了複製 FILE1 的命令。發生這種情況的原因是 FILE2 中尾隨空白行。當我刪除這些命令時,該命令完美運行。

由於文件中的某些文字可能與大小寫不匹配,因此我在上面的命令中包含了 -i 。

感謝所有提供幫助的人。

相關內容