Sed:在某些位置替换字母

时间:2019-05-09 19:59:52

标签: regex sed chemistry

我有一个结构如下的文件:

N1H3O1 C2H2
C1H4 H201
C1H1N1 N1H3
C2N1O1P1H3 P5

我想做的是计算每个公式中系数的总和。因此,期望输出为:

1+3+1 5 2+2 4
1+4 5 2+1 3
1+1+1 3 3+1 4
2+1+1+1+3 8 5 5

我所做的是用“ +”简单替换每个字母,然后删除第一个“ +”。

但是,我想知道如何使用分支和流运算符在sed中以更正确的方式进行操作。

1 个答案:

答案 0 :(得分:1)

您输入的问题是使用了0而不是O,这可能使得很难为其设计正则表达式,您可以看到here:< / p>

enter image description here

([^A-Z]+)*([0-9]+)

除此之外,您只需添加([^A-Z]+)就能捕获数字。

但是,您可能不希望使用正则表达式来执行此任务,因为除0之外的数据都是结构化的,您可以编写脚本来执行此操作。