Suchen Sie in einer Datei nach einem Text und fügen Sie dahinter einen Text ein.

Suchen Sie in einer Datei nach einem Text und fügen Sie dahinter einen Text ein.

Ich habe eine Textdatei. Die Textdatei enthält den folgenden Inhalt.

ServerName
ServerAdmin webmaster@localhost
DocumentRoot

Ich muss www.mydomain.comnach dem einen Text einfügen ServerName. Gibt es dafür einen Befehl?

Antwort1

Verwendung von sed:

sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

Die erfasste Gruppe \(ServerName\)wird im Ersetzungsmuster als verwendet \1.

Bearbeiten der Datei an Ort und Stelle, mit Backup, unter der Annahme der GNU-, ssedBusybox- oder einiger BSD-Implementierungen von sed:

sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

Die Originaldatei bleibt erhalten file.bakund die geänderte Datei hat das Format file.txt.bak.

Bearbeiten vor Ort, ohne Backup (GNU ssedoder busyboxnur):

sed -i 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt

(für BSDs verwenden sed -i '' 's/...).


Noch kürzer, ohne erfasste Gruppe:

sed -i 's/^ServerName$/& www.mydomain.com/' file.txt

Hier &wird es durch das entsprechende Zeichen ersetzt.

Antwort2

sed --in-place 's/ServerName/& www.example.com/' /path/to/apache-vhost.conf

Antwort3

Verwenden des sed-Ersatzbefehls:

sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt

verwandte Informationen