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

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

ServerName ServerAdmin webmaster@localhost DocumentRoot 

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

  • Заменить второе появление между двоеточием и скобкой
  • Использовать awk в качестве редактора потока
  • найти и заменить строку в файле без использования временного файла с SED
  • Почему это не работает, когда я добавляю его к текущему запуску sed?
  • Извлеките и форматируйте данные с помощью `cut` и` awk`
  • Нет результата при использовании нескольких файлов write & sed в сценарии оболочки
  • Замена определенного номера в файлах unix
  • Как заменить запятые на пробелы в csv, но вставляя другое количество пробелов после каждого столбца?
  • 3 Solutions collect form web for “Найти текст в файле и вставить текст после него”

    Использование 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 

    Здесь & будет заменен на матч.

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

    Используя команду sed substitue:

     sed -i 's/ServerName/ServerName www.mydomain.com/' file.txt 
    Linux и Unix - лучшая ОС в мире.