请问我一个问题:我有一个这样的文件
@HWI-ST273:296:C0EFRACXX:2:2101:17125:145325/1
TTAATACACCCAACCAGAAGTTAGCTCCTTCACTTTCAGCTAAATAAAAG
+
8?8A;DDDD;@?++8A?;C;F92+2A@19:1*1?DDDECDE?B4:BDEEI
@BBBB-ST273:296:C0EFRACXX:2:1303:5281:183410/1
TAGCTCCTTCGCTTTCAGCTAAATAAAAGCCCAGTACTTCTTTTTTACCA
+
CCBFFFFFFHHHHJJJJJJJJJIIJJJJJJJJJJJJJJJJJJJIJJJJJI
@HWI-ST273:296:C0EFRACXX:2:1103:16617:140195/1
AAGTTAGCTCCTTCGCTTTCAGCTAAATAAAAGCCCAGTACTTCTTTTTT
+
@C@FF?EDGFDHH@HGHIIGEGIIIIIEDIIGIIIGHHHIIIIIIIIIII
@HWI-ST273:296:C0EFRACXX:2:1207:14316:145263/1
AATACACCCAACCAGAAGTTAGCTCCTTCGCTTTCAGCTAAATAAAAGCC
+
CCCFFFFFHHHHHJJJJJJJIJJJJJJJJJJJJJJJJJJJJJJJJJJJIJ
我
我对以'@HWI'开头的行很感兴趣,但是我想计算所有不以'@HWI'开头的行。在所示示例中,结果为1,因为只有一行以'@BBB'开头。
更清楚地说:我只想知道不是'@HWI'的模式的第一行的数目(重复的4行);我希望我足够清楚。请告诉我是否需要进一步澄清
答案 0 :(得分:0)
使用GNU sed,您可以使用其扩展地址打印每四行,然后使用grep计数不以@HWI开头的行:
sed -n '1~4p' file.fastq | grep -cv '^@HWI'
否则,您可以使用Perl
perl -ne 'print if 1 == $. % 4' -- file.fastq | grep -cv '^@HWI'
$.
包含当前行号,%
是模运算符。
但是一旦我们运行了Perl,我们就不再需要grep了:
perl -lne '++$c if 1 == $. % 4; END { print $c }' -- file.fastq
-l
从输入中删除换行符,并将其添加到输出中。