【发布时间】:2018-04-27 04:13:24
【问题描述】:
我在下面列出的其他帖子中四处寻找我的问题的解决方案,但看起来我的正则表达式完全不同,需要特别注意: How to output only captured groups with sed Replace one capture group with another with GNU sed (macOS) 4.4 sed replace line with capture groups
我正在尝试替换大 JSON 文件中的正则表达式匹配组, 我的文件有 mongoDB 导出的对象,我正在尝试用字符串替换 objectId:
{"_id":{"$oid":"56cad2ce0481320c111d2313"},"recordId":{"$oid":"56cad2ce0481320c111d2313"}}
所以原始文件中的输出应该是这样的: {"_id":"56cad2ce0481320c111d2313","recordId":"56cad2ce0481320c111d2313"}
这是我在 shell 中运行的命令:
sed -i 's/(?:{"\$oid":)("\w+")}/\$1/g' data.json
我没有收到任何错误,但文件保持不变。 我到底做错了什么?
【问题讨论】:
-
不要使用正则表达式修改json,使用jq之类的..
-
$oid的值是多少? -
$oid 值是一个字符串,所以当你从 mongo 导出一个集合时,_id 键被导出为 Object:
"_id":{"$oid":"56cad2ce0481320c111d2313"}
标签: sed