【发布时间】:2015-08-28 01:20:20
【问题描述】:
我有两个文件,一个带有换行符分隔的数字 ID 列表
>cat list.txt
3342
232
...
还有一个在后面的行中有这些 ID 和一些序列数据
>cat Seqeunce.txt
>600
ATCGCGG
>3342
ACTCGGTC
>232
TGTGCT
>3342
ACGCGGTC
我想打印 ID 匹配的所有行和下一行,但仅在第一次找到匹配项时打印。 因此,输出将是:
> ...some code... list.txt Sequence.txt
>3342
ACTCGGTC
>232
TGTGCT
请注意,只有第一次出现 ID 3342 的行和下一行会被打印
我尝试使用 grep,
grep -f list.txt -A 1 -m 1 Sequence.txt
但它不起作用。只需使用实际 ID 运行 grep -A 1 和 -m 1 即可产生我想要的结果,但我有数千个 ID,无法手动运行每个 ID。
【问题讨论】:
-
这需要为 list.txt 中的每个 id 重新扫描 sequence.txt。如果您有成千上万的人,您将等待数小时才能完成硬盘驱动器。如果您提前知道 id (list.txt),则可以一次性完成。但是,您需要一个脚本来执行此操作。您可以使用this 工具创建一个正则表达式树,然后将数据文件与之匹配。结果是即时的。
-
一个很好的观点。如果您确实有数千个 ID 要查找,则应该使用适合查找的工具...您可以做一个非常简单的程序,将
Sequence.txt读入映射/哈希/关联数组(无论语言如何称呼它们),然后您可以快速轻松地执行查找。