我有一个结构如下的文件:
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中以更正确的方式进行操作。
答案 0 :(得分:1)
您输入的问题是使用了0
而不是O
,这可能使得很难为其设计正则表达式,您可以看到here:< / p>
([^A-Z]+)*([0-9]+)
除此之外,您只需添加([^A-Z]+)
就能捕获数字。
但是,您可能不希望使用正则表达式来执行此任务,因为除0
之外的数据都是结构化的,您可以编写脚本来执行此操作。