ネストされた中かっこを含むブロックを削除する

ネストされた中かっこを含むブロックを削除する

私のNGINX設定ファイルに次のブロックがあります

server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /web/default/wwwroot/;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

ブロック全体を削除したいです。次のsed / regexコマンドを試しました。

sed -ri '/server,/.*\}/d' /etc/nginx/nginx.conf

ただし、見つかった最初の閉じた括弧を削除してセクションを残します。

   error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

一致する閉じ括弧と一致させ、ブロック全体を削除するにはどうすればよいですか?

ありがとうございます。

ベストアンサー1

アドレスを使用して、パターン1とパターン2の間のすべての行を一致させることができますsed '/pattern1/,/pattern2/'

あなたの場合、次から始まる行からserver {始まる行まですべてを削除すると、 }次のように書かれます。

sed '/^server {/,/^    }/d' file

おすすめ記事