首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用正则表达式替换文本

用正则表达式替换文本
EN

Stack Overflow用户
提问于 2016-11-03 14:53:46
回答 2查看 40关注 0票数 0

我有一个名为package.json的文本文件,其中包含以下代码片段:

代码语言:javascript
复制
  "single-instance":true,
  "user-agent": "somename",
  "PORT": 2000,

我需要用另一个值(在本例中是xxx)替换'somename‘,而'somename’不是固定的,它可以是任何东西。

所以我尝试使用下面的正则表达式,但是它没有更新文件。

我已经在regex101上测试了正则表达式,它似乎是有效的,所以我猜它一定与sed语法有关??

代码语言:javascript
复制
    sed -i 's/"user-agent": "(.*)"/xxx/' package.json

对我的错误之处有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2016-11-03 14:57:56

您需要捕获匹配的键,并在替换中使用反向引用:

代码语言:javascript
复制
sed -i.bak -E 's/("user-agent": )"[^"]*"/\1"xxx"/' file

cat file

"single-instance":true,
"user-agent": "xxx",
"PORT": 2000,

注意"user-agent":周围的(),以获取组#1中的值,并使用\1代替。

票数 0
EN

Stack Overflow用户

发布于 2016-11-03 15:02:16

您可以在备份package.json后尝试此操作吗

代码语言:javascript
复制
sed -i -re 's/("user-agent":).*$/\1 "xxx"/' package.json
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40395464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档