sed查找并替换fastq正则表达式

尖锐

我有一个文件,例如

head testSed.fastq
@M01551:51:000000000-BCB7H:1:1101:15800:1330 1:N:0:NGTCACTN+TATCCTCTCTTGAAGA
NGTCACTN
+
#>AAAAF#
@M01551:51:000000000-BCB7H:1:1101:15605:1331 1:N:0:NATCAGCN+TAGATCGCCAAGTTAA
NATCAGCN
+
#>>AA?C#
@M01551:51:000000000-BCB7H:1:1101:15557:1332 1:N:0:NCAGCAGN+TATCTTCTATAAATAT
NCAGCAGN

我正在尝试0使用正则表达式将最后一个冒号之后的字符串替换为(在本示例中为第1,5,9行-但全局而言)。

我已经使用egrep检查了我的正则表达式egrep '[ATGCN]{8}\+[ATGCN]{16}$' testSed.fastq,该表达式返回了我期望的所有行。

但是,当我尝试使用sed -i 's/[ATGCN]{8}\+[ATGCN]{16}$/0/g' testSed.fastq原始文件时,它保持不变,并且没有替换发生。

我怎样才能解决这个问题?我的正则表达式不够具体吗?

ghoti

您的正则表达式的结构为ERE而非BRE,这是sed的默认解释。并非所有sed实现都支持ERE,但是您可以man sed在您的环境中检查以确定是否可行。查找-r-E选项。您可以在花括号前面加上反斜杠来替代使用边界。

就是说,为什么不只查找最后一个字段中的精确文本,而不是查找以冒号开头且后面没有冒号的字符串?以下RE既与BRE又与ERE兼容。

$ sed '/^@/s/:[^:]*$/:0/' testq
@M01551:51:000000000-BCB7H:1:1101:15800:1330 1:N:0:0
NGTCACTN
+
#>AAAAF#
@M01551:51:000000000-BCB7H:1:1101:15605:1331 1:N:0:0
NATCAGCN
+
#>>AA?C#
@M01551:51:000000000-BCB7H:1:1101:15557:1332 1:N:0:0
NCAGCAGN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章