2014-10-30 3 views
0

Я пытаюсь извлечь строки из одного файла A на основе файла B (что соответствует).извлечение строк из одного файла на основе другого файла запроса - linux

файл А

chr gene start stop pval 
1 xic 455 467 0.005 
2 ABD 5667 5789 0.03 
5 GHE 4556 4784 0.23 
6 sdg 4568 4677 0.558 

файл B

ABD 
GHE 

поэтому выход будет

chr gene start stop pval 
2 ABD 5667 5789 0.03 
5 GHE 4556 4784 0.34 

и я попробовать этот код:

Grep -f BA >> A_B.txt

ПРОБЛЕМЫ: здесь в примере файл все работает нормально, но когда я пытаюсь в моем наборе данных он дает фактический список (ABD, GHE), а также несколько другой список (SDG) ...

как

chr gene start stop pval 
    2 ABD 5667 5789 0.03 
    5 GHE 4556 4784 0.34 
    6 sdg 4568 4677 0.558 

Предложения: Как я могу решить ... И можно интегрировать несколько кодов, так что я получаю только выбранные столбцы

Желаемый результат:

 chr gene pval 
     2 ABD 0.03 
     5 GHE 0.34 
     6 sdg 0.558 

Благодарит так много M

ответ

0

с использованием AWK

awk 'FNR==NR{a[$2]=$0; if(NR==1) print $0} ($1 in a) {print a[$1]}' FileA FileB > output.txt 

, если вы хотите, чтобы выбрать столбцы

awk 'FNR==NR{a[$1]=$0}($2 in a) {print $1,$2,$5}' FileB FileA > output.txt 
+0

благодаря его работы ,, будет попробовать его на реальных данных ,, , как я могу выбрать два столбца и перейти к выходному файлу. –

+0

вы можете использовать оператор перенаправления для его сохранения, я отредактировал код, чтобы сохранить его в output.txt – Hackaholic

Смежные вопросы