Substitua o conteúdo de linha única por multilinha no arquivo nginx.conf

Substitua o conteúdo de linha única por multilinha no arquivo nginx.conf

Quero fazer um backup do arquivo "/etc/nginx/nginx.conf"

E então edite-o para a seguinte linha no arquivo:

include /etc/nginx/sites-enabled/*;

Em vez disso, aparecerá como...

include /etc/nginx/sites-enabled/*;

server {
    listen 8081;

    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_redirect default;
        auth_basic "Server Administration";
        auth_basic_user_file /etc/nginx/passwords;
    }
}

Meu problema é que ainda sou muito novo no Linux e pensei que poderia usar o sed, mas meu novo entendimento é que ele lê linha por linha e, portanto, não é bom para conteúdo multilinha. Não tenho certeza de como fazer o Perl funcionar com ele, pois alguns dos caracteres interfeririam no Perl. Meu cérebro está meio frito só de aprender como o NGINX funciona como é... qualquer ajuda é muito apreciada.

Meu comando SED atual....

Deve funcionar bem. Yay! :D

sudo sed -i.bak 's/^    include \/etc\/nginx\/sites-enabled\/\*\;$/&\n  \n  server {\n      listen 8081\;\n     \n      location \/ {\n         proxy_pass http:\/\/127.0.0.1:8080\/\;\n            proxy_redirect default\;\n          auth_basic "Server Administration"\;\n          auth_basic_user_file \/etc\/nginx\/passwords\;\n    }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf

Responder1

sedpode converter uma única linha em várias linhas.
Dê uma olhada no exemplo de script de "prova de conceito" abaixo. Ele gera o documento "aqui documento" convertido.

#!/bin/sh
sed 's/^include \/etc\/nginx\/sites-enabled\/\*;$/&\nYES!/' <<END
input-line:1
include /etc/nginx/sites-enabled/*;
input-line:3
include /etc/nginx/sites-enabled/*;
END

Responder2

Além das informações fornecidas por Andrzej A. Flip, você precisa escapar dos caracteres de ponto e vírgula (;), asterisco (*) e barra (/). O \n cria uma nova linha e usa -i.bak para fazer um backup do arquivo antes de fazer a alteração com uma extensão .bak.

sudo sed -i.bak 's/^    include \/etc\/nginx\/sites-enabled\/\*\;$/&\n  \n  server {\n      listen 8081\;\n     \n      location \/ {\n         proxy_pass http:\/\/127.0.0.1:8080\/\;\n            proxy_redirect default\;\n          auth_basic "Server Administration"\;\n          auth_basic_user_file \/etc\/nginx\/passwords\;\n    }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf

informação relacionada