Ich versuche, das Zeichen < in dieser Datei /etc/dovecot/conf.d/10-ssl.conf durch ein leeres oder kein Zeichen zu ersetzen.
Mein Skript ist
sudo sed -i 's/\<\/etc\/dovecot\/private\/dovecot\.pem/\/etc\/dovecot\/private\/dovecot\.pem/g' /etc/dovecot/conf.d/10-ssl.conf
Es hat nicht funktioniert, dann müde: -
sudo sed -i '0,/\<\/etc\/dovecot\/private\/dovecot\.pem/s/\<\/etc\/dovecot\/private\/dovecot\.pem/\/etc\/dovecot\/private\/dovecot\.pem/' /etc/dovecot/conf.d/10-ssl.conf
Es hat nicht so gut funktioniert. Was ist falsch und wie kann ich es machen? Außerdem ist es lang. Wie kann ich es in mehrere Zeilen aufteilen?
Antwort1
In sed \<
wird der „Anfang eines Wortes“ abgeglichen, während plain <
wörtlich abgeglichen wird.
Für eine besser lesbare Ersetzung ändern Sie die Trennzeichen:
sed -i 's=</etc/dovecot/private/dovecot\.pem=/etc/dovecot/private/dovecot.pem=g'
Im Ersatzteil sind keine Backslash-Punkte erforderlich.
Sie können die Anweisung noch weiter verkürzen, indem Sie ein Capture verwenden:
sed -i 's=<\(/etc/dovecot/private/dovecot\.pem\)=\1=g'