Sugiro perl
em vez de sed
para esta tarefa:
perl -i -pe 's/(port=)(\d+)$/$1.($2+1)/e' filename
Eu quero substituir um número no final de uma string, incrementando o número por um a cada vez que eu executar uma linha específica de sed. a string é assim:
server-port = 25555
Eu estava pensando em executar algo como essa linha sed para fazer isso, mas não funciona.
sed -i 's/port=[0-9]{5}/int(&+1)/'
Sugiro perl
em vez de sed
para esta tarefa:
perl -i -pe 's/(port=)(\d+)$/$1.($2+1)/e' filename
Se você não se importa com um multi-liner, você pode contorná-lo usando sed e shell com:
# 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
Observe as aspas duplas em torno da expressão sed; é assim que $ v pode ser interpretado antes de o sed vê-lo. Neste caso particular, você poderia deixar a expressão sed não citada, já que não há mais nada lá para a interpretação (errada) da concha.
Tags sed gnu ubuntu shell-script arithmetic