我下面有一个名为 的示例文件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 信息read1
,read4
我将有一个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 这些很长的行?