使用sed从stdin使用regex搜索和替换JSON

时间:2013-05-29 20:18:22

标签: regex sed

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

e.g。将"pk": 123转换为"pk": null

我尝试过类似的事情:

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

但这没有效果。正在削减正则表达式,似乎在[0-9]+处突破,但我不确定为什么这是一个简单而有效的正则表达式。我做错了什么?

2 个答案:

答案 0 :(得分:0)

这应该有效:

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

答案 1 :(得分:0)

猫不是必需的。

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

如果您确切需要pk

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

e.g。

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