Linux 搜索某些模式并替换行中间的一些文本,忽略行的最后一个字符
我尝试使用SED搜索一个模式,并尝试在=之后替换一些文本(IP地址),该文本位于行的中间。 但它一直替换到行尾,我需要忽略行中的最后一个字符,即” 这是我需要更新的文件Linux 搜索某些模式并替换行中间的一些文本,忽略行的最后一个字符,linux,bash,shell,scripting,sh,Linux,Bash,Shell,Scripting,Sh,我尝试使用SED搜索一个模式,并尝试在=之后替换一些文本(IP地址),该文本位于行的中间。 但它一直替换到行尾,我需要忽略行中的最后一个字符,即” 这是我需要更新的文件 $ cat appsettings.json ...... .......... "ConnectionStrings": { "PMIEnterpriseDbLocal":"Data Source=ec2-123-000-111-123.us-east-1.compute.amazonaws.com;Initial C
$ 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个值
Source=
(应替换IP,直到;)Password=
(应忽略最后一个字符)Profile=
(应替换“”中的值)sed -i -r 's#Source=[^ ;]*#Source=10.10.10.10#' appsettings.json"
用于源模式的SED工作正常(这意味着我能够用提供的IP地址替换该值)
用于密码的SED正在工作,但该行中的最后一个字符(即“)也将被替换,我只需要替换密码,并且应忽略最后一个字符(即“)
sed -i -r 's#Profile:["^ "]*#Profile:"sample"#' appsettings.json"
SED应该在文件中搜索模式配置文件并替换我传递的文本
预期执行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
使用合适的工具进行作业。等的可能重复项。ec2-123-000-111-123.us-east-1.compute.amazonaws.com不是IP地址。它看起来像一个主机名。IP地址看起来像n.n.n.n(IPv4)或xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(IPv6)
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