当greping(非常)长的行时得到“超出PCRE的行长度限制”

当greping(非常)长的行时得到“超出PCRE的行长度限制”

我下面有一个名为 的示例文件reads.fq.gz,如下所示:

@read1 bla bla sample_id=PD170815
ACTGCGACCCAAACCTTGCACATTGGAC
+
%*&3&&&$$&%$%&3
@read2 bla bla sample_id=PD170815
ACTTTGACCCCAAATCGTGGAC
+
&3&&&%#%^%$%$#%$@#$@#
@read3 bla bla sample_id=PD170815
ATTTGACCCAAATGACCCAGT
+
$%^&()^$#@..;:":
@read4 bla bla sample_id=PD170815
TTGGAACGTGACGATGACCAGT
$%^&*&*^$$$#$#$#$

@read从这个文件中,我想 grep和 加号之间的字符+

我有另一个.txt文件,我在其中指定要从中 grep 读取的内容reads.fq.gz。例如,如果我想从中 grep 信息read1read4我将有一个list.txt如下所示的文件:

read1
read4

如果我做:

while read p; do zcat reads.fq.gz | grep -Pzo "\@$p(.)*\n[A-Za-z]*\n\+\n"; done < list.txt

我得到了我想要的:

@read1 bla bla sample_id=PD170815
ACTGCGACCCAAACCTTGCACATTGGAC
+
@read4 bla bla sample_id=PD170815
TTGGAACGTGACGATGACCAGT
+

虽然这是一个示例文件。我想要 grep 的文件很大(23Gb),并且@read加号之间的行+可能很长。因此,当我对原始文件运行相同的命令时,我得到

grep: exceeded PCRE's line length limit

对于 中的每个条目list.txt

有没有办法指定“无行长度限制”之类的内容,以便grep我可以 grep 这些很长的行?

相关内容