У меня есть текстовый файл. Текстовый файл содержит следующее содержимое.
ServerName
ServerAdmin webmaster@localhost
DocumentRoot
Мне нужно вставить текст www.mydomain.com
после ServerName
. Есть ли какая-нибудь команда, чтобы это сделать?
решение1
С использованием sed
:
sed 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
Захваченная группа \(ServerName\)
используется в шаблоне замены как \1
.
Редактирование файла на месте с резервным копированием, предполагая, что используются GNU, ssed
busybox или некоторые реализации BSD sed
:
sed -i.bak 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
Исходный файл будет сохранен как , file.bak
а измененный файл будет иметь расширение file.txt.bak
.
Редактирование на месте, без резервного копирования (GNU ssed
или busybox
только):
sed -i 's/^\(ServerName\)$/\1 www.mydomain.com/' file.txt
(для BSD используйте sed -i '' 's/...
).
Еще короче, без какой-либо захваченной группы:
sed -i 's/^ServerName$/& www.mydomain.com/' file.txt
Здесь &
будет заменено совпадение.
решение2
sed --in-place 's/ServerName/& www.example.com/' /path/to/apache-vhost.conf
решение3
Использование команды sed substitute:
sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt