我有一個大型選項卡文件,其中包含 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 。
感謝所有提供幫助的人。