我有一个名为package.json的文本文件,其中包含以下代码片段:
"single-instance":true,
"user-agent": "somename",
"PORT": 2000,我需要用另一个值(在本例中是xxx)替换'somename‘,而'somename’不是固定的,它可以是任何东西。
所以我尝试使用下面的正则表达式,但是它没有更新文件。
我已经在regex101上测试了正则表达式,它似乎是有效的,所以我猜它一定与sed语法有关??
sed -i 's/"user-agent": "(.*)"/xxx/' package.json对我的错误之处有什么建议吗?
发布于 2016-11-03 14:57:56
您需要捕获匹配的键,并在替换中使用反向引用:
sed -i.bak -E 's/("user-agent": )"[^"]*"/\1"xxx"/' file
cat file
"single-instance":true,
"user-agent": "xxx",
"PORT": 2000,注意"user-agent":周围的(和),以获取组#1中的值,并使用\1代替。
发布于 2016-11-03 15:02:16
您可以在备份package.json后尝试此操作吗
sed -i -re 's/("user-agent":).*$/\1 "xxx"/' package.jsonhttps://stackoverflow.com/questions/40395464
复制相似问题