回答編集履歴

2

追記

2022/10/20 15:50

投稿

退会済みユーザー
test CHANGED
@@ -11,3 +11,23 @@
11
11
  echo "$OUTPUT" # (true_2347087436712_490.00_150.00_640.00_0315764274_Biabia Kudi_Oto Obong_12102022_1)
12
12
  ```
13
13
 
14
+ ### 追記
15
+
16
+ 数値としての合計は bc を使い、sed は`-e` オプションで使って `-E` オプションを使わないことにし、その替わり cutコマンドを使った方法です。
17
+
18
+ ```shell
19
+ #!/usr/bin/env bash
20
+
21
+ INPUT='(true_2347087436712_490.00_150.00_0.00_0315764274_Biabia Kudi_Oto Obong_12102022_1)'
22
+
23
+ HEAD=$(echo $INPUT | cut -d_ -f1,2,3,4) # (true_2347087436712_490.00_150.00
24
+ TAIL=$(echo $INPUT | cut -d_ -f6,7,8,9,10) # 0315764274_Biabia Kudi_Oto Obong_12102022_1)
25
+ FORMULA=$(echo $INPUT | cut -d_ -f3,4 | sed -e 's/_/+/') # 490.00+150.00
26
+ SUM=$(echo $FORMULA | bc) # 640.00
27
+
28
+ RESULT="${HEAD}_${SUM}_${TAIL}"
29
+
30
+ echo $RESULT # (true_2347087436712_490.00_150.00_640.00_0315764274_Biabia Kudi_Oto Obong_12102022_1)
31
+
32
+ ```
33
+

1

不要な文字、空行を削除

2022/10/20 14:21

投稿

退会済みユーザー
test CHANGED
@@ -4,12 +4,10 @@
4
4
 
5
5
  INPUT='(true_2347087436712_490.00_150.00_0.00_0315764274_Biabia Kudi_Oto Obong_12102022_1)'
6
6
 
7
- FORMULA=$(sed -E "s/^\(true_[0-9]+_([0-9.]+)_([0-9.]+)_.*$/\1+\2/" <<< "$INPUT") # 490.00+150.00"
7
+ FORMULA=$(sed -E "s/^\(true_[0-9]+_([0-9.]+)_([0-9.]+)_.*$/\1+\2/" <<< "$INPUT") # 490.00+150.00
8
8
 
9
9
  OUTPUT=$(sed -E "s/_0\.00_/_$(bc <<< "$FORMULA")_/" <<< "$INPUT")
10
10
 
11
11
  echo "$OUTPUT" # (true_2347087436712_490.00_150.00_640.00_0315764274_Biabia Kudi_Oto Obong_12102022_1)
12
-
13
-
14
12
  ```
15
13