gpt4 book ai didi

linux - 搜索某些模式并替换行中间的某些文本并忽略该行的最后一个字符

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:35 26 4
gpt4 key购买 nike

我正在尝试使用 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

我需要使用 SED 替换上述文件中的 3 个值。

  1. Source = <someIP> (应替换 IP 直到;)
  2. Password = <someText> (应忽略最后一个字符“)
  3. 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 应该在文件中搜索模式 Profile 并替换我传递的文本

预计执行 SED 命令,我应该看到更新后的 appsetting 文件,如下所示:

$ 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

最佳答案

对于这个特定的代码片段,以下工作有效:

sed  -i -r -e 's#Source=[^ ;]*#Source=10.10.10.10#' -e 's#Password=[^ "]*#Password=abc@123#' -e 's#"Profile": "[^ "]*"#"Profile": "sample"#' 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

关于linux - 搜索某些模式并替换行中间的某些文本并忽略该行的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com