4

この例は、devstack スクリプトからのものです。

sed -i -e "/^\[$section\]/,/^\[.*\]/ s|^\($option[ \t]*=[ \t]*\).*$|\1$value|" "$file"

sedこの置換コマンドの仕組みを説明できる人はいますか?

基本的なメカニズムはある程度理解sedしていますが、これは私には複雑に思えます。

4

1 に答える 1

2

-iオプションは、ファイル$fileを所定の場所で編集します。

アドレス範囲

一致する行の範囲の構文は次のとおりです。/pattern1/、/ pattern2 /スクリプトは、行の先頭にある$ sectionの文字を含む最初の行(caretの使用に注意)からこの^までの行の範囲を検索します。 [。*]は、少なくとも1文字を含む行を示します。

置換

上記の範囲指定子に一致するすべての行に対して、置換コマンドs / pattern / replace/commandが実行されます。|の使用に注意してください 置換コマンドを区切る-s|pattern |replace|。

一致するパターンは、行の先頭から始まるカレット(^)を使用します。

セクション(....)は、\1と呼ばれる置換セクションにあります。

(...)セクションには、文字列$ sectionの後に、場合によってはいくつかのスペースまたはタブ文字が続きます-[\ t] *は、タブまたはスペースがないか、それ以上ないことを表します。'='文字が続き、場合によってはより多くのスペースまたはタブが続きます。。*$は、行末の任意の数の文字に一致します。

置換\1$ valueは、前述のように含まれるセクション(...)であり、その後に$valueの値が続きます。

HTH!

于 2013-03-03T09:56:39.997 に答える