我需要在硬件驱动程序中修改的字符串.conf文件如下:
options rsi_sdio dev_oper_mode=13
看起来很简单,但开发人员很乐意更改此字符串,这将破坏精确匹配的 sed 表达式。我现在必须将值前面的字符串视为“不确定”;无法以 100% 的精度进行可靠预测。
因此,我只能匹配值本身,该值本身也可以变化:当前为“13”,但将来可能会改变。唯一“已知”的是我需要修改的值长度可以是 1 或 2 位数字。
所以我需要一个防弹的正则表达式,即使字符串和值都发生变化,也能保证值可以成功设置,以避免损坏!
答案1
当开发人员向我抛出这个曲线球时,这实际上导致了无线连接的巨大突破。由于这是很多人都可能遇到的情况,我将发布我的解决方案:
sed -E -i 's/=[0-9]{1,2}$/=6/' /etc/modprobe.d/rs9113.conf
这匹配等号后跟至少 1 位数字,但最多 2 位数字。因此字符串可以更改,甚至默认值“13”也可以更改,但此正则表达式应该保持面向未来的能力。
希望处理这种广泛变化的其他人发现这种方法有助于确保他们的脚本保持正确 -