Como combinar o parâmetro e substituir o valor após o separador “=”

0

o comando perl one liner para substituir o valor no arquivo é simples:

perl  -i  's/oldval/newval/g' file.txt

mas qual deve ser a sintaxe do perl one liner caso desejemos substituir o valor no parâmetro específico (o valor é após "=" seperator

Exemplo

Queremos combinar a string VIP_IP e substituir o valor após o separador "=" por outro valor como 192.17.200.100 (com a sintaxe do perl one liner)

more file.txt

VIP_IP=172.17.200.15

if [[ $VIP_IP = $HOST_IP ]]
then

.
.
.

Resultados esperados

more file.txt

VIP_IP=192.17.200.100

if [[ $VIP_IP = $HOST_IP ]]
then

.
.
.
    
por maihabunash 30.03.2015 / 08:07

1 resposta

2

Inclua a chave no seu regexp.

Se você sabe exatamente como está escrito, então você pode usar uma afirmação lookbehind positiva e é mais fácil:

perl -pi -e 's/(?<=^\$VIP_IP=).*/192.17.200.100/' your_file

Caso contrário, você deve incluir a chave correspondente no texto de substituição usando $1 :

perl -pi -e 's/(^\$VIP_IP\s*=).*/$1192.17.200.100/' your_file
    
por 30.03.2015 / 10:04