Ich habe eine Textdatei. Die Textdatei enthält den folgenden Inhalt.
ServerName
ServerAdmin webmaster@localhost
DocumentRoot
Ich muss www.mydomain.com
nach 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-, ssed
Busybox- oder einiger BSD-Implementierungen von sed
:
sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
Die Originaldatei bleibt erhalten file.bak
und die geänderte Datei hat das Format file.txt.bak
.
Bearbeiten vor Ort, ohne Backup (GNU ssed
oder busybox
nur):
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