我有一个名为package.json的文本文件,其中包含以下snippit:
"single-instance":true,
"user-agent": "somename",
"PORT": 2000,
我需要更换某些名称'另一个值(在这种情况下是xxx)和' somename'不是固定的,它可以是任何东西。
所以我尝试使用以下正则表达式,但它没有更新文件。
我已经在regex101上测试了regex表达式并且它似乎是有效的,所以我想它必须与sed语法有关吗?
sed -i 's/"user-agent": "(.*)"/xxx/' package.json
关于我哪里出错的任何建议?
答案 0 :(得分:0)
您需要捕获匹配的密钥并使用替代参考:
sed -i.bak -E 's/("user-agent": )"[^"]*"/\1"xxx"/' file
cat file
"single-instance":true,
"user-agent": "xxx",
"PORT": 2000,
请注意(
周围的)
和"user-agent":
以获取第1组中的值并使用\1
替换。
答案 1 :(得分:0)
你可以在备份package.json
之后试试这个sed -i -re 's/("user-agent":).*$/\1 "xxx"/' package.json