sed 増分演算

sed 増分演算

特定の行が実行されるたびに、その数字を1ずつ増やして文字列の末尾の数字を変更したいと思いますsed

文字列は次のとおりです。

server-port=25555

私はそれを行うためにこの行のようなsedものを実行できると思いましたが、うまくいきません。

sed -i 's/port=[0-9]{5}/int(&+1)/'

答え1

perlこれを行わないことをお勧めしますsed

perl -i -pe 's/(port=)(\d+)$/$1.($2+1)/e' filename

答え2

echo "server-port=25555" | sed  -E 's/(.*-port=)([0-9]+)/echo "\1$((\2+1))"/e' 

答え3

複数行を使用しても問題ない場合は、sedとShellの数学を使用してこの問題を解決できます。

# or however else you're getting the server-port section
num=$(echo server-port=25555 | sed 's/server-port=//') 
v=$((v+1))
sed -i "s/server-port=25555/server-port=$v/" your-file-here

sed式の周りに二重引用符があることに注意してください。これにより、sedが表示する前に$ vを解釈できます。この特別なケースでは、sed式を引用符なしで残すことができます。なぜなら、シェルが(間違って)解釈する他の内容がないからです。

関連情報