(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