Я пытаюсь найти шаблон, используя SED, и пытаюсь заменить некоторый текст (IP-адрес) после =, который находится между строкой.Но он заменяет до конца строки, где мне нужно игнорировать последний символ в строке ".
Это мой файл, в котором мне нужно выполнить обновление.
$ cat appsettings.json
......
..........
"ConnectionStrings": {
"PMIEnterpriseDbLocal":"Data Source=ec2-123-000-111-123.us-east-1.compute.amazonaws.com;Initial Catalog=FunnyTestDb;Persist Security Info=True;User ID=sa;Password=W@rld111"
},
......
.......
"Profile": "testing",
..............
.....
END OF FILE
Мне нужно заменить 3 значения в вышеуказанном файле с помощью SED.
Source = <someIP>
(следует заменить IP до;) Password = <someText>
(следуетигнорировать последний символ ") Profile = <someValue>
(следует заменить значение в" ")
Я попытался с помощью приведенных ниже команд найти 3 шаблона:
sed -i -r 's#Source=[^ ;]*#Source=10.10.10.10#' appsettings.json"
SED, используемый для шаблона источника, работает нормально, как и ожидалось (что означает, что я могу заменить значение указанным IP-адресом)
sed -i -r 's#Password=[^ ]*#Password=abc@123#' appsettings.json"
SED, используемый для пароля, работает, но последнийсимвол (который ") в этой строке также заменяется, мне нужно только заменить пароль, а последний символ (который") следует игнорировать.
sed -i -r 's#Profile:["^ "]*#Profile:"sample"#' appsettings.json"
SED должен искать шаблон профиляв файле и заменить текст, который я передаю
Expвыполнив команду SED, я должен увидеть обновленный файл настроек, как показано ниже:
$ cat appsettings.json
......
..........
"ConnectionStrings": {
"PMIEnterpriseDbLocal":"Data Source=10.10.10.10;Initial Catalog=FunnyTestDb;Persist Security Info=True;User ID=sa;Password=abc@123"
},
......
.......
"Profile": "sample",
..............
.....
END OF FILE