如何使用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]+
处突破,但我不确定为什么这是一个简单而有效的正则表达式。我做错了什么?
答案 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