Заменить текст в переменной с помощью sed или awk - PullRequest
1 голос
/ 18 июня 2020

У меня есть переменная со значением, указанным ниже,

var1="heritage=external-dns,external-dns/owner=us-east-1:testapp-sandbox,external-dns/resource=ingress/monitoring/prometheus-operator-grafana"

var2=us-east-1:testapp-dev

Я хочу заменить только текст между owner = и , external-dns который равен us-east-1: testapp-sandbox с содержимым из var2.

Итак, я ожидаю вывод, как показано ниже,

var1_updated="heritage=external-dns,external-dns/owner=us-east-1:testapp-dev,external-dns/resource=ingress/monitoring/prometheus-operator-grafana"

Я пробовал это, sed -i 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' value.txt, но он выдает мне ошибку как недопустимый код команды v

Пожалуйста, дайте мне знать, как это сделать с помощью sed или awk .. .

1 Ответ

1 голос
/ 18 июня 2020

Ваша команда близка к действительной, просто используйте расширенное регулярное выражение с -E переключателем:

sed -E 's/(owner=).*(,external-dns)/\1us-east-1:testapp-dev\2/g' <<< "$var1"

Теперь используйте переменную:

sed -E "s/(owner=).*(,external-dns)/\1$var2\2/g" <<< "$var1"

Обратите внимание, что двойные кавычки здесь обязательны, чтобы оболочка раскрывала переменные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...