sed: 不確定文字列の可変長数値の変更

sed: 不確定文字列の可変長数値の変更

ハードウェアドライバで修正する必要がある文字列.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」も変更される可能性がありますが、この正規表現は将来も維持される必要があります。

これらの幅広い変更を処理したい他の人は、このアプローチがスクリプトを正しく維持するのに役立つと思います。

おすすめ記事