既存の文字列のインデックスを増やす方法は?

既存の文字列のインデックスを増やす方法は?

次のような文字列値があり、次のように文字列のインデックスを増やしたいと思います。

{
      "name": "poc_param_model_001",
      "type": "DOUBLE",
      "role": "MEASURE",
      "seq": 1
}

これが私がしたいことです。

{
          "name": "poc_param_model_002",
          "type": "DOUBLE",
          "role": "MEASURE",
          "seq": 2
}



{
              "name": "poc_param_model_003",
              "type": "DOUBLE",
              "role": "MEASURE",
              "seq": 3
}

{
              "name": "poc_param_model_004",
              "type": "DOUBLE",
              "role": "MEASURE",
              "seq": 4
}



....

{
              "name": "poc_param_model_099",
              "type": "DOUBLE",
              "role": "MEASURE",
              "seq": 99
 }

このシナリオを実装する方法は?

ベストアンサー1

データがdata.txtに保存されていると仮定すると、次のことができます。

while IFS= read -r line
do
 if grep -q "^ *\"seq\" *: *[^ ]\+ *\$" <<< "$line"; then
  prefix=$(sed -E "s/^( *\"seq\" *: *)[^ ]+ *\$/\1/" <<< "$line" )
  number=$(sed -E "s/^ *\"seq\" *: *([^ ]+) *\$/\1/" <<< "$line" )
  suffix=$(sed -E "s/^ *\"seq\" *: *[^ ]+( *)\$/\1/" <<< "$line" )
  echo "$prefix$((++number))$suffix"
 else
  echo "$line"
 fi
done < data.txt

スクリプトはすべてのデータを読み込み、「seq」を探し、それに続く数字を増やします。

おすすめ記事