我有了追蹤圖形的線:正則表達式虛位以待
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總結他們
我有了追蹤圖形的線:正則表達式虛位以待
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
awk -F"[^[:digit:].]*" '{t=0;for (i=1;i<=NF;i++) t+=$i;print t}'
6
60
600
的一切,是不是一個號碼設置爲字段分隔
這FS
應太做到這一點:-F"[=,]"
sed -r 's/[^0-9 ]//g;s/ +/+/g'
輸出:
2+3+1
20+30+10
200+300+100
sed -r 's/[^0-9 ]//g;s/ +/+/g' | bc
輸出:
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結果 – aw626