我有一个文件(patterns.txt),其中包含一个以换行符分隔的模式列表,例如:
AAAA........
....CCCC....
........YYYY
ATCC
我正在搜索的文件(table.txt)包含如下所示(大小为 120gb):
ZZZZAAAAGTGT 0 1 12
AAAAGTGTAAYY 0 9 1
GGGGTTTTCCCC 1 0 0
HHHHHHHHYYYY 1 8 0
AAATCCCHHHHH 0 0 1
我正在使用以下 grep 命令:
grep -f patterns.txt table.txt
这将返回我的示例中的所有行。但是,如果我可以强制 grep 只查看前 12 个字符,则不会返回第一行和第三行(这是理想的)。
这个 grep 是一个更大程序的一部分。这意味着模式必须来自文件。但如果需要,我可以更改文件的内容。
我正在考虑用字符类 [ACGTHY] 替换所有点。这意味着模式AAAA........将变为:
AAAA[ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY][ACGTHY]
这应该提供所需的结果,但它似乎很慢。有没有更好的方法来做到这一点?
编辑:我也在考虑用 \S 替换点。