Команда Sed в скрипте, чтобы найти строку, если существует, добавить новую строку - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь вставить строку после нахождения определенной строки в файл с именем xyz.txt.

Вот файл xyz.txt:

/virtualhosts
    {
        "alsed-agency-starter.abc.com"
        "ecaas-fr-agency-starter.abc.com"
        "dvdvd-in-agency-starter.abc.com"
    }

Здесь я вставил новую строку "geg-de-starter.abc.com", как показано ниже:

/virtualhosts
    {
        "geg-de-starter.abc.com"
        "alsed-agency-starter.abc.com"
        "ecaas-fr-agency-starter.abc.com"
        "dvdvd-in-agency-starter.abc.com"
    }

Как это можно сделать с помощью sed (или любым другим способом)?

1 Ответ

0 голосов
/ 22 апреля 2019
awk -v newStr='"geg-de-starter.abc.com"' '
    NR==FNR { if ( index($0,newStr) ) gotNew=1; next }
    index($0,"/virtualhosts") { gotBeg=1 }
    !gotNew && gotBeg && /"/ {
        indent = $0
        sub(/".*/,"",indent)
        print indent newStr
        gotBeg = 0
    }
1' file file
/virtualhosts
    {
        "geg-de-starter.abc.com"
        "alsed-agency-starter.abc.com"
        "ecaas-fr-agency-starter.abc.com"
        "dvdvd-in-agency-starter.abc.com"
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...