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 math 来解决这个问题:

# 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 表达式周围的双引号;这样 $v 就可以在 sed 看到它之前被解释。在这种特殊情况下,您可以不加引号地保留 sed 表达式,因为其中没有其他内容可供 shell 进行(错误)解释。

相关内容