Verwenden von GNU SED zum Kommentieren einer Zeile und Hinzufügen einer neuen Zeile

Verwenden von GNU SED zum Kommentieren einer Zeile und Hinzufügen einer neuen Zeile

Angenommen, ich möchte die Datei /etc/ssh/sshd_config in RHEL 7 bearbeiten, um unsere SSH-Konfiguration zu sichern.

Ich möchte beispielsweise die Ciphers-Zeile ersetzen, das Original an Ort und Stelle lassen und es auskommentieren. Außerdem möchte ich in der Lage sein, den kürzesten Teil der Zeichenfolge als Schlüssel zu verwenden, damit Red Hat ihn nicht jedes Mal beschädigt, wenn sie das RPM/die ISO-Installation aktualisieren.

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

soll werden...

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...

Ich habe versucht, eine neue Zeile in einer Testdatei zu suchen/hinzuzufügen, deren Dateiname „Testdatei“ ist und deren Inhalt „Dies ist meine Testdatei“ lautet. Ich habe versucht, „Nein, ist es nicht“ als neue Zeile hinzuzufügen, und bin kläglich gescheitert.

sed -i '/This is my test file./aNo it's not.' testfile

Wie würde ich dabei vorgehen und – noch wichtiger – was sind die Schlüsselkonzepte dahinter?

Antwort1

Ich habe es mit dem folgenden sed-Befehl versucht und es hat wunderbar funktioniert

Befehl

sed -i '/^Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-c/s/.*/#&\nCiphers abc-123,def-456,ghi-789/g' filename

Ausgabe

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789

Antwort2

sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config

-ian Ort und Stelle

-ndruckt nichts, sofern es nicht explizit gedruckt wird

/pam Ende der Suchzeichenfolge erzwingt den Ausdruck und überschreibt damit effektiv -ndie übereinstimmende Zeichenfolge

verwandte Informationen