Найти текст в файле и вставить текст после него

Найти текст в файле и вставить текст после него

У меня есть текстовый файл. Текстовый файл содержит следующее содержимое.

ServerName
ServerAdmin webmaster@localhost
DocumentRoot

Мне нужно вставить текст www.mydomain.comпосле ServerName. Есть ли какая-нибудь команда, чтобы это сделать?

решение1

С использованием sed:

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

Захваченная группа \(ServerName\)используется в шаблоне замены как \1.

Редактирование файла на месте с резервным копированием, предполагая, что используются GNU, ssedbusybox или некоторые реализации 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

Связанный контент