sedでは四則演算とかの計算処理については対応していないのだが、bashと組み合わせる事で計算処理ができないかとやってみたので備忘で残しておく。
で、結論としては以下のように、e
(置換や抽出した内容を元に組み立てたコマンドを実行する) を利用することで、bashで $((計算式))
をechoさせることで計算をさせることができる。
echo 1234 | sed 's/[0-9]*/echo $((& + 1111))/ge'
blacknon@BS-PUB-UBUNTU-01:~$ echo 1234 | sed 's/[0-9]*/echo $((& + 1111))/ge'
2345
これを応用してやると、以下のように2桁ごとに抽出して計算をさせるような事もできる。
echo 1234 4567 7890 | sed -r 's/([0-9]{2})/echo $((&+5))\n/ge'
blacknon@BS-PUB-UBUNTU-01:~$ echo 1234 4567 7890 | sed -r 's/([0-9]{2})/echo $((&+5))\n/ge'
17
39
50
72
83
95