15 列 (FILE1) と、テーブルに表示される名前のリスト (FILE2) を持つ大きなタブ ファイルがあります。問題は、名前が FILE1 の列 4 から 10 に表示され、大文字と小文字が一致しない可能性があることです。
行内でヒットを検索し、その行全体を印刷するコマンドが必要です。大文字と小文字を区別せず、FILE2 内の名前が大きな単語の一部である行は印刷しないのが望ましいです。
私は次のことを試しました:
grep -Fwf FILE2 FILE1 > out
xargs -I {} grep "^{}" FILE1 < FILE2 > out
最初のものは FILE1 を out にコピーするだけです。2 番目のものは空の out ファイルを生成します。
また、空のファイルを作成するか、上記のように FILE1 をコピーするコマンドもいくつか試しましたawk
。現在、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 を含めました。
助けてくれた皆さんに感謝します。