计算不包含特定单词的特定行数。

我有个问题。我有一个文件是这样的

@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

I

我只对以’@HWI’开头的行感兴趣,但我想计算所有不是以’@HWI’开头的行。在所示的例子中,结果将是1,因为有一行是以’@BBB’开头的。

更清楚的说:我只是想知道模式的第一行(有4行重复)不是以’@HWI’开头的行数;我希望我说的足够清楚。如果你需要更多的说明,请告诉我。

解决方案:

使用 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'

$. 包含当前行号。% 是modulo运算符。

但是一旦我们运行了 Perl,我们就不再需要 grep 了。

perl -lne '++$c if 1 == $. % 4; END { print $c }' -- file.fastq

-l 就可以从输入中删除换行符,并将其添加到输出中。

给TA打赏
共{{data.count}}人
人已打赏
未分类

相关子查询在MySQL中工作,但在Oracle中没有返回结果。

2022-9-8 12:28:27

未分类

字段 authenticationManager LoginController 需要一个类型为AuthenticationManager'的bean,但无法找到。

2022-9-8 12:39:36

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索