使用列表从大型制表符分隔文件中提取行

使用列表从大型制表符分隔文件中提取行

我有一个大型选项卡文件,其中包含 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 。

感谢所有提供帮助的人。

相关内容