繁体   English   中英

使用Sed使用来自stdin的正则表达式搜索和替换JSON

[英]Using Sed to search and replace JSON using regex from stdin

我将如何使用sed在stdin中搜索正则表达式"pk": [0-9]+ ,并将其替换为"pk": null

例如,将"pk": 123转换为"pk": null

我已经尝试过类似的东西:

cat mydata.json | sed -e s/\"pk\"\:\s[0-9]+/\"pk\"\:\snull/g

但这没有效果。 减少正则表达式,它似乎在[0-9]+处中断,但是我不确定为什么,因为这既是一个简单又有效的正则表达式。 我究竟做错了什么?

这应该工作:

sed -e 's/"pk": [0-9]\+/"pk": null/g' mydata.json

猫不是必需的。

sed 's/\(.*:\s*\)[0-9]\+/\1null/' file

如果您pk需要pk

sed 's/\("pk":\s*\)[0-9]\+/\1null/' file

例如

kent$  echo '"pk": 123'|sed 's/\(.*:\s*\)[0-9]\+/\1null/'
"pk": null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM