¿Cómo hago para sustituir una linea por otra de un archivo .conf desde un script?

publicado por: Anonymous

Por ejemplo, tengo las lineas:

bind 127.0.0.1  
tcp-keepalive 0    

Debo cambiar el valor de la segunda, para lo que usé el siguiente comando:

sudo sed -i 's/tcp-keepalive 0/tcp-keepalive 60/g' etc/redis/redis.conf     

Pero, en el caso de que haya sido cambiado anteriormente por otro valor, no se encontraría tcp-keepalive 0 y no cambiaría nada.

La pregunta sería por tanto, ¿Cómo puedo cambiar la línea sin importar el valor actual que tenga (porque fue modificada anteriormente)?

solución

Codigo

sed -i 's/tcp-keepalive [0-9]*/tcp-keepalive 50/g' /etc/redis/redis.conf

Resultado

bind 127.0.0.1  
tcp-keepalive 50 

Explicacion

En este codigo, hemos usado una expresion regular, para poder “atrapar” los numeros que se encuentren despues de la palabra tcp-keepalive, sin importar el valor que tengan.

[0-9]*

Significaria algo como:

Coincide con todos los numeros que se encuentren entre 0 a 9 y que se repitan multiples veces.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *