我有一个文本行(带有引导值的newick文件格式),其中包含0.000和1.000之间的许多数字,我希望乘以100并将该值作为0到100之间的舍入整数返回。这些数字都在前面a")"然后是":"。在文本行中还有其他数字我想要保持不受影响,并不被这些包围。我一直在尝试使用perl单行代码执行此操作:
perl -ape 's/\)(\d\.\d+):/\)int($1*100+.5):/eg' test.newick
但是,由于语法错误,它失败了,我相信因为它无法评估")"
和":"
我试图保留在替换中。有什么建议我怎么做?谢谢!
答案 0 :(得分:0)
一些问题:
s{}{}
作为正则表达式分隔符以避免斜塔混乱解析如下:
perl -ape 's{\)(\d.\d+):}{")" . int($1*100+.5) . ":"}eg' test.newick
或者,如果您不想复制RHS中的文字文本,可以使用前瞻和后瞻断言
perl -ape 's{\)\K(\d.\d+)(?=:)}{ int($1*100+.5) }eg' test.newick