【发布时间】:2016-05-04 05:26:12
【问题描述】:
我有两个文件:
seqs.fa:
>seq000007;size=72768;
ACTGTGAG
>seq000010;size=53132;
GTAAGATC
GAATTCTT
>seq00045;size=40321;
ACCCATTT
...
数字.txt
72768
53132
我想要的输出将是第一个文件中与第二个文件中的数字匹配的行:
>seq000007;size=72768;
>seq000010;size=53132;
我尝试使用awk,但它只返回匹配第一个数字的行:
awk -F"\n" -v RS=">" 'NR==FNR{for(i=1;i<=NF;i++) A[$i]; next} END {for (header in A) {if ( match(header,$1) ) {print header}}}' seqs.fa numbers.txt
seq000007;size=72768;
seq072768;size=1;
为什么 awk 只遍历 numbers.txt 中第一行的“header”数组?而且,如果这是XY problem,有没有更好的方法来实现这个目标?
【问题讨论】: