Ersetzen Sie einzelne Zeilen durch mehrzeilige Inhalte in der Datei nginx.conf.

Ersetzen Sie einzelne Zeilen durch mehrzeilige Inhalte in der Datei nginx.conf.

Ich möchte ein Backup der Datei "/etc/nginx/nginx.conf" erstellen

Und bearbeiten Sie es anschließend so, dass folgende Zeile in der Datei enthalten ist:

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

Wird stattdessen angezeigt als ...

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;
    }
}

Mein Problem ist, dass ich noch sehr neu bei Linux bin und dachte, ich könnte sed verwenden, aber nach meinem neuen Verständnis liest es Zeile für Zeile und ist daher nicht für mehrzeilige Inhalte geeignet. Ich bin nicht sicher, wie ich Perl damit zum Laufen bringe, da einige der Zeichen Perl stören würden. Mein Gehirn ist schon ein bisschen erschöpft, wenn ich nur lerne, wie NGINX funktioniert, so wie es ist … jede Hilfe ist sehr willkommen.

Mein aktuelles SED-Kommando...

Sollte problemlos funktionieren. Juhu! :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

Antwort1

sedkann eine einzelne Zeile in mehrere Zeilen umwandeln.
Sehen Sie sich unten das Beispielskript „Proof of Concept“ an. Es gibt ein konvertiertes „Here Doc“-Dokument aus.

#!/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

Antwort2

Zusätzlich zu den von Andrzej A. Flip gegebenen Informationen müssen Sie das Semikolon (;), das Sternchen (*) und den Schrägstrich (/) maskieren. Das \n macht daraus eine neue Zeile und Sie können -i.bak verwenden, um eine Sicherungskopie der Datei zu erstellen, bevor Sie die Änderung mit der Erweiterung .bak vornehmen.

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

verwandte Informationen