问题描述
我知道StackOverflow并非代码编写服务,但是在过去3个小时中,sed
一直使我发疯。
文件的外观:
{
// ...
"first": {
"second": [
"indexZero","theseStringsAreDynamic","soINeedToUseWildcard"
]
}
// ...
}
所需结果:
{
// ...
"first": {
"second": [
]
}
// ...
}
您做了什么?
我根据以下内容松散地尝试了大约一百万个变体:
sed -i 's/\"second\": \[.*\]/\"second\": []/' "my.json"
## ~ Which gives: ~
#
# "first": {
# "second": []
# "indexZero",# "theseStringsAreDynamic",# "soINeedToUseWildcard"
# ]
# },
本质上,我需要从.json
文件的数组中删除所有元素,因此,如果sed
不是执行此工作的正确工具,请告诉我。
谢谢您的时间。
解决方法
该作业的正确工具是jq
:
$ jq '.first.second = []' input.json
{
"first": {
"second": []
}
}
要替换原始文件,需要两个步骤-将输出重定向到临时文件,然后重命名:
jq '.first.second = []' orig.json > tmp.json && mv -f tmp.json orig.json