Sed aritmética incremental

1

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)/'
    
por Connor Law 13.04.2016 / 20:58

2 respostas

3

Sugiro perl em vez de sed para esta tarefa:

perl -i -pe 's/(port=)(\d+)$/$1.($2+1)/e' filename
    
por 13.04.2016 / 21:09
0

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.

    
por 13.04.2016 / 22:37