sed を使用してテキストコメントをオフにすると機能しません。

sed を使用してテキストコメントをオフにすると機能しません。

(nginx設定)ファイルから4行セクションのコメントを削除しようとしています。使用 sed。最初はgrepを使ってみましたが、正規表現が正しいようです。

$ grep ^#.*bny /etc/nginx/sites-enabled/default
#        location /bny {

#ただし、sedを使用して行の先頭を削除しようとすると失敗します。

$ sudo sed -i '/^#.*bny/,+3 s/^#+//' /etc/nginx/sites-enabled/default
$ grep ^#.*bny /etc/nginx/sites-enabled/default
#        location /bny {

私は同じ戦略を使ってsedを使ってそのセクションに注釈を付けましたが、うまくいったと思います。

sudo sed -i '/bny/,+3 s/^/#/' /etc/nginx/sites-enabled/default

二重コメントも問題になりません。私が何を間違っているのでしょうか?

答え1

+BRE(基本正規表現)構文ではリテラルなので、代替パターンは一致しません。

s/^##*//、または(GNU sedで)を使用するか、s/^#\{1,\}//コマンドラインオプションを使用してs/^#\+//拡張正規表現(ERE)に切り替えることができます。-E-r

関連情報