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
このファイルのプラス記号と+
.txt
私がgrepしたいものを指定する別のファイルがありますreads.fq.gz
。たとえば、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
非常に長い行を見つけるために「行の長さ制限なし」のようなものを指定する方法はありますか?