Как извлечь строки из второго столбца в одном файле, который можно найти в другом файле? - PullRequest
1 голос
/ 14 января 2020

У меня есть два таких файла:

head 1000G.EUR.7.bim
7   rs7456436   0.0085998121    44935   T   C
7   rs7384563   0.0099808474    45653   C   T
7   rs6583338   0.011117913 46239   G   A
7   rs62429403  0.03835409  53998   C   A
7   rs4281072   0.039011123 54183   T   C
7   rs6965835   0.051294015 57660   C   T
7   rs12670102  0.060656098 60392   T   C
7   rs62429414  0.061278166 60728   A   G

head c7.txt
SNP A1 A2 Z
rs62429403 C A -0.317767
rs62429404 C G -0.0968181
rs73260517 C G 0.362803
rs56339393 C T 0.361902
rs6950543 C G -0.325175
rs62429407 G A 0.357001
rs62429414 A G 1.11945

Я хочу найти в файле c7.txt строки, соответствующие rs ### в 1000G.EUR.7.bim. Например, решение для этого образца:

SNP A1 A2 Z
rs62429403 C A -0.317767
rs62429414 A G 1.11945

Я пытался сделать это:

awk 'FNR==NR{a[$2]=$0; if(NR==1) print $0} ($1 in a) {print a[$1]}' 1000G.EUR.7.bim c7.txt > output.txt

Но я получаю строки из 1000G.EUR.7.bim, соответствующие ct. txt вместо строк из c7.txt, соответствующих 1000G.EUR.7.bim на основе столбца rs ###.

1 Ответ

1 голос
/ 14 января 2020
awk 'FNR==NR{a[$2]; next} $1 in a' 1000G.EUR.7.bim c7.txt > output.txt

Сохраните второе поле 1000G.EUR.7.bim в массиве a и напечатайте строку c7.txt, если в массиве присутствует значение rsXXX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...