Regex 需要正则表达式模式帮助

Regex 需要正则表达式模式帮助,regex,linux,sed,grep,Regex,Linux,Sed,Grep,我有一条线有以下模式: A:B=2, G:E=3, N:M=1 AA:BB=20, DG:EE=30 ;;sssddd;; WN:FFM=10 A:dB=200 ssss G:EASD=300 hellp SSASDN:FFFM=100 我想把所有的数字相加 输出应该是 2+3+1 = 6 20+30+10 = 60 200+300+100 = 600 然后我可以用| bc-q来求和这里有一种使用awk的方法 不是数字的所有内容都设置为字段分隔符 此FS也应起作用:-F[=,] 输出:

我有一条线有以下模式:

A:B=2, G:E=3, N:M=1
AA:BB=20, DG:EE=30 ;;sssddd;; WN:FFM=10
A:dB=200 ssss G:EASD=300 hellp SSASDN:FFFM=100
我想把所有的数字相加

输出应该是

2+3+1 = 6

20+30+10 = 60

200+300+100 = 600

然后我可以用| bc-q来求和

这里有一种使用awk的方法

不是数字的所有内容都设置为字段分隔符

此FS也应起作用:-F[=,]

输出:

2+3+1
20+30+10
200+300+100
6
60
600
输出:

2+3+1
20+30+10
200+300+100
6
60
600

其中一个应该做你真正想做的事情:

$ awk -F'=' -v OFS='+' '{for (i=2;i<=NF;i++) printf "%s%s", $i+0, (i<NF?OFS:ORS)}' file
2+3+1
20+30+10
200+300+100

$ awk -F'=' -v OFS='+' '{sum=0; for (i=2;i<=NF;i++) { sum+=$i; printf "%s%s", $i+0, (i<NF?OFS:"=" sum ORS)} }' file
2+3+1=6
20+30+10=60
200+300+100=600

$ awk -F'=' '{sum=0; for (i=2;i<=NF;i++) sum+=$i; print sum}' file
6
60
600

正则表达式不做算术运算。您必须使用普通代码来添加它们。您可以使用正则表达式来查找数字。我正在考虑将数字输入2+3+1 | bc wchih将返回6结果
$ awk -F'=' -v OFS='+' '{for (i=2;i<=NF;i++) printf "%s%s", $i+0, (i<NF?OFS:ORS)}' file
2+3+1
20+30+10
200+300+100

$ awk -F'=' -v OFS='+' '{sum=0; for (i=2;i<=NF;i++) { sum+=$i; printf "%s%s", $i+0, (i<NF?OFS:"=" sum ORS)} }' file
2+3+1=6
20+30+10=60
200+300+100=600

$ awk -F'=' '{sum=0; for (i=2;i<=NF;i++) sum+=$i; print sum}' file
6
60
600