Если мы можем предположить, что у вас есть URL во второй строке ниже second:
, вы можете использовать
sed -i '/second:/{N;N;s#"http://.*"#"next.com"#}' file
См. Это онлайн sed
демо .
N
добавляет новую строку, а затем следующую строку в пространство шаблона. Итак, команда s
ubstitute выполняется для следующего текста:
second:
{
host = "http://nxt-secondepisode.xcfm.crata.dive.com/err1.2.2/table/kenny.xml.gz"
Если неизвестно, какая именно это строка, вы можете l oop, прежде чем найдете лиона, который начинается с 0 + пробелы, затем host =
, и только после этого выполните подстановку:
sed -i '/second:/{:a;n;/^ *host *=/!ba;s#"http://.*"#"next.com"#}' file
См. online sed
demo .
Здесь,
/second:/
- если строка содержит second:
:a
- установить метку с именем a
n
- сбросить текущее пространство шаблона и прочитать следующая строка в нем /^ *host *=/!ba
- если строка не (!
) начинается с 0+ пробелов, host
, 0+ пробелов, =
, затем go back (b
) для маркировки a
позиция s#"http://.*"#"next.com"#
- выполнить подстановку.
Буквенные пробелы можно заменить на [[:space:]]*
, [[:blank:]]*
или \s*
для соответствия любой пробел в зависимости от того, что работает в вашем sed
.