我想通过每次运行特定行时将该数字增加 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 进行(错误)解释。