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

1

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 "=" separador por outro valor como 192.17.200.100 (com a sintaxe de 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 / 09:15

1 resposta

2

Alterando um endereço IP

perl -p -i -e 's/VIP_IP=[[:digit:].]+/VIP_IP=192.17.200.100/' file.txt

Ou:

perl -i -pe 's/(VIP_IP=)[[:digit:].]+/${1}192.17.200.100/' file.txt

Ou, se o novo IP estiver em uma variável do shell:

export ip=192.17.200.100
perl -i -pe 's/(VIP_IP=)[[:digit:].]+/${1}$ENV{ip}/' file.txt

Alterando um nome

Suponha que o nosso arquivo se pareça com:

$ cat file.txt
VIP_IP=192.17.200.100
HOST=James

E, suponha que desejamos alterar a palavra (alfabética) depois do HOST. Nesse caso:

export host=Timothy
perl  -pe 's/(HOST=)[[:alpha:]]+/${1}$ENV{host}/' file.txt

Se quiséssemos alterar uma palavra alfanumérica, em oposição a uma palavra alfabética pura:

export host=Timothy
perl  -pe 's/(HOST=)[[:alnum:]]+/${1}$ENV{host}/' file.txt

Se quiséssemos ser menos restritivos e alterarmos todos e quaisquer caracteres após HOST= :

export host=Timothy
perl  -pe 's/(HOST=).*/${1}$ENV{host}/' file.txt
    
por 30.03.2015 / 09:21

Tags