
A string que preciso modificar em um driver de hardware.confarquivo é o seguinte:
options rsi_sdio dev_oper_mode=13
Parece bastante simples, mas os desenvolvedores ficarão felizes em alterar esta string, que quebrará uma expressão sed que corresponda com precisão. Agora tenho que tratar a string que precede o valor como "indeterminada"; não pode ser previsto de forma confiável com 100% de precisão.
Portanto, só posso corresponder ao valor em si, que também pode ser variável: atualmente é "13", mas isso pode mudar no futuro. O único "conhecido" é que o valor que preciso modificar pode ter 1 ou 2 dígitos.
Portanto, preciso de um regex à prova de balas que possa garantir que o valor possa ser definido com êxito, mesmo que a string e o valor sejam alterados para evitar quebras!
Responder1
Na verdade, isso causou uma grande quebra na conectividade sem fio quando os desenvolvedores me lançaram essa bola curva. Como é uma situação em que muitas pessoas podem se encontrar, postarei minha solução:
sed -E -i 's/=[0-9]{1,2}$/=6/' /etc/modprobe.d/rs9113.conf
Corresponde ao sinal de igual seguido por pelo menos 1 dígito, mas até 2 dígitos. Portanto, a string pode mudar, e até mesmo o valor padrão de "13" pode mudar, mas esse regex deve permanecer à prova de futuro.
Espero que outros que lidam com esse tipo de ampla variabilidade considerem essa abordagem útil para garantir que seus scripts permaneçam corretos.