使用 `sed` 从 JSON 数组中删除所有元素
Using `sed` to remove all elements from JSON array
我知道 Whosebug 不是代码编写服务,但 sed
在过去的 3 小时里一直让我发疯。
综上所述,我需要修改我拥有的 .json
文件的内容。
文件的样子:
{
// ...
"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
我知道 Whosebug 不是代码编写服务,但 sed
在过去的 3 小时里一直让我发疯。
综上所述,我需要修改我拥有的 .json
文件的内容。
文件的样子:
{
// ...
"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