Как заменить строку после определенной строки в некоторой строке в текстовом файле, используя sed в сценариях оболочки? - PullRequest
0 голосов
/ 11 июля 2019

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

APP_ARTIFACT=xxxx
APP_DOMAIN=xxx
APP_NAME=xxx
APP_OWNER_EMAIL=xxx
APP_PATH=xxx
IMAGE=dockerhub.ccc.xx.net:5005/aaa/xxx-rhel7:2.4
NAMESPACE=xxx
PAAS=xxxnce1

Теперь я хочу написать скрипт в .sh, который может заменить версию после 'IMAGE = dockerhub.ccc.xx.net: 5005 / aaa / xxx-rhel7: 'в другую версию.

Это означает, что я хочу заменить 2.4 (или может содержать также другую строку) другой строкой., сохраняя при этомостальная часть файла как есть.Как я могу сделать это, используя какой-нибудь встроенный инструмент linux, такой как 'sed'?

после замены версии, связывающей строку, на 'mystring ;, ожидаемый результат после замены должен быть:

APP_ARTIFACT=xxxx
APP_DOMAIN=xxx
APP_NAME=xxx
APP_OWNER_EMAIL=xxx
APP_PATH=xxx
IMAGE=dockerhub.ccc.xx.net:5005/aaa/xxx-rhel7:mystring
NAMESPACE=xxx
PAAS=xxxnce1

1 Ответ

1 голос
/ 11 июля 2019

Если вы хотите, чтобы новая версия была 555, вы можете сделать:

sed -re 's/(^IMAGE.*):(.*)/\1:555/'

Вышеприведенное соответствует строке, начинающейся с IMAGE, и просматривает все после нее. Он проверяет наличие двоеточия (:), использует первое совпадение (\ 1) и добавляет двоеточие 555 (: 555) для новой версии.

Вы также можете использовать переменную:

myver="555"
sed -re "s/(^IMAGE.*):(.*)/\1:$myver/"
...