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」も変更される可能性がありますが、この正規表現は将来も使用できるはずです。

この種の幅広い変動性に対処する他の人々にとって、このアプローチがスクリプトの正確性を保つのに役立つことを願っています。

関連情報