Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我将如何使用 sed 在标准输入中搜索正则表达式"pk": [0-9]+并将其替换为"pk": null?
"pk": [0-9]+
"pk": null
例如转换"pk": 123为"pk": null
"pk": 123
我试过类似的东西:
cat mydata.json | sed -e s/\"pk\"\:\s[0-9]+/\"pk\"\:\snull/g
但这没有效果。削减正则表达式,它似乎中断了,[0-9]+但我不知道为什么,因为这既是一个简单而有效的正则表达式。我究竟做错了什么?
[0-9]+
猫是没有必要的。
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
这应该有效:
sed -e 's/"pk": [0-9]\+/"pk": null/g' mydata.json