sed: cambia un valor numérico de longitud variable para una cadena indeterminada

sed: cambia un valor numérico de longitud variable para una cadena indeterminada

La cadena que necesito modificar en un controlador de hardware.confel archivo es el siguiente:

options rsi_sdio dev_oper_mode=13

Parece bastante simple, pero los desarrolladores están felices de cambiar esta cadena, lo que romperá una expresión sed que coincida con precisión. Ahora tengo que tratar la cadena que precede al valor como "indeterminada"; no se puede predecir de manera confiable con una precisión del 100%.

Por lo tanto, solo puedo hacer coincidir el valor en sí, que también puede ser variable: actualmente es "13", pero esto podría cambiar en el futuro. Lo único "conocido" es que el valor que necesito modificar puede tener 1 o 2 dígitos de longitud.

¡Así que necesito una expresión regular a prueba de balas que pueda garantizar que el valor se pueda establecer correctamente incluso si tanto la cadena como el valor cambian para evitar roturas!

Respuesta1

En realidad, esto provocó una gran interrupción en la conectividad inalámbrica cuando los desarrolladores me lanzaron esta bola curva. Dado que es una situación en la que muchas personas podrían encontrarse, publicaré mi solución:

sed -E -i 's/=[0-9]{1,2}$/=6/' /etc/modprobe.d/rs9113.conf

Esto coincide con el signo igual seguido de al menos 1 dígito, pero hasta 2 dígitos. Por lo tanto, la cadena puede cambiar, e incluso el valor predeterminado de "13" puede cambiar, pero esta expresión regular debería permanecer a prueba de futuro.

Espero que otros que se enfrentan a este tipo de amplia variabilidad encuentren útil este enfoque para garantizar que sus guiones sigan siendo correctos.

información relacionada