У меня есть большой файл tab с 15 столбцами (FILE1) и список (FILE2) имен, которые должны появиться в таблице. Проблема в том, что имя может появиться в столбцах с 4 по 10 в FILE1, и это может не совпадать с регистром.
Мне нужна команда, которая ищет строку для совпадения, а затем печатает всю строку. Предпочтительно, чтобы это не было чувствительно к регистру и не печатало строки, где имена в FILE2 являются частью большего слова.
Я попробовал следующее:
grep -Fwf FILE2 FILE1 > out
xargs -I {} grep "^{}" FILE1 < FILE2 > out
Первый просто копирует FILE1 в out. Второй выдает пустой файл 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 в команду выше.
Спасибо всем, кто помог.