この例は、devstack スクリプトからのものです。
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" "$file"
sed
この置換コマンドの仕組みを説明できる人はいますか?
基本的なメカニズムはある程度理解sed
していますが、これは私には複雑に思えます。
この例は、devstack スクリプトからのものです。
sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" "$file"
sed
この置換コマンドの仕組みを説明できる人はいますか?
基本的なメカニズムはある程度理解sed
していますが、これは私には複雑に思えます。
-iオプションは、ファイル$fileを所定の場所で編集します。
一致する行の範囲の構文は次のとおりです。/pattern1/、/ pattern2 /スクリプトは、行の先頭にある$ sectionの文字を含む最初の行(caretの使用に注意)からこの^までの行の範囲を検索します。 [。*]は、少なくとも1文字を含む行を示します。
上記の範囲指定子に一致するすべての行に対して、置換コマンドs / pattern / replace/commandが実行されます。|の使用に注意してください 置換コマンドを区切る-s|pattern |replace|。
一致するパターンは、行の先頭から始まるカレット(^)を使用します。
セクション(....)は、\1と呼ばれる置換セクションにあります。
(...)セクションには、文字列$ sectionの後に、場合によってはいくつかのスペースまたはタブ文字が続きます-[\ t] *は、タブまたはスペースがないか、それ以上ないことを表します。'='文字が続き、場合によってはより多くのスペースまたはタブが続きます。。*$は、行末の任意の数の文字に一致します。
置換\1$ valueは、前述のように含まれるセクション(...)であり、その後に$valueの値が続きます。
HTH!