Grep 使用 -A 和 -B 标志输出奇怪的字符以进行 fastq 分析

Grep outputting strange characters using -A and -B flags for fastq analysis

我有一个如下所示的文件:

@HISEQ:331:C85AMANXX:8:1101:16636:1980 1:N:0:ATCACGAC
NTCTATAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
#<<BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF
@HISEQ:331:C85AMANXX:8:1101:2337:2047 1:N:0:ATCACGAC
CTGTGAAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
BBBBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFF<FFF<FF<BFFFF<FFFFBFFFBFFFFF<B

我正在使用以下 grep 命令:

grep -B 1 -A 2 'AGGCATCAGCCGGA' file.fastq | head > out.fastq

输出看起来像这样,您可以在第 5 行和第 10 行看到输出了两个破折号,我不希望这样:

@HISEQ:331:C85AMANXX:8:1101:16636:1980 1:N:0:ATCACGAC
NTCTATAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
#<<BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF
--
@HISEQ:331:C85AMANXX:8:1101:2337:2047 1:N:0:ATCACGAC
CTGTGAAAACTCTTCATGCCAGTTCCCTGTCTCATCAGATAGATTCTGAGGCCTCTAGGCATCAGCCGGATATCCCTAAGGACAGTGTTGGAGGAACTGCTGAGTGGATTCATGGTCAACTACCAA
+
BBBBBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFF<FFF<FF<BFFFF<FFFFBFFFBFFFFF<B
--

有没有第 5 行和第 10 行没有破折号的输出方式?

使用 grep -v:

grep -B 1 -A 2 'AGGCATCAGCCGGA' file.fastq |
grep -v -- '^--' |
head > out.fastq

默认情况下 grep 通过分隔符 -- 分隔上下文组。一个块中可能有多个匹配项,因此行数不是恒定的。分隔符将显示块的开始和结束位置。

如果您的 grep 版本可用,您可以添加选项 --no-group-separator 来禁止此功能。

您可以向 sed 添加管道:

grep -B 1 -A 2 'AGGCATCAGCCGGA' file.fastq | head | sed '/^--$/d'> out.fastq