将指定的JSON对象从数组移动到其他数组
我有数百个格式如下的文件:将指定的JSON对象从数组移动到其他数组,json,bash,sed,jq,Json,Bash,Sed,Jq,我有数百个格式如下的文件: { "settings": [ { "name": "A", "value": "A_value" }, { "name": "B", "value": "B_value" }, { "name": "C", "value": "C_val
{
"settings": [
{
"name": "A",
"value": "A_value"
},
{
"name": "B",
"value": "B_value"
},
{
"name": "C",
"value": "C_value"
},
{
"name": "D",
"value": "D_value"
}
]
}
并且需要通过将一些名称和值带到另一个数组中来修改它们,但仅将特定的名称和值带到另一个数组中,例如B和D,这样文件将如下所示:
{
"settings": [
{
"name": "A",
"value": "A_value"
},
{
"name": "C",
"value": "C_value"
}
],
"settings2": [
{
"name": "B",
"value": "B_value"
},
{
"name": "D",
"value": "D_value"
}
]
}
如何在bash脚本中完成?我有一个必须移动的“名字”列表
谢谢大家! 那么:
to_move='["B", "D"]'
jq --argjson toMove "$to_move" '{
"settings": [.settings[] | select([.name] | inside($toMove) | not)],
"settings2": [.settings[] | select([.name] | inside($toMove))]
}' file.json
你试过什么?您遇到了哪些障碍?名称“settings2”来自哪里?请将您的解释、样本输入和样本输出更清晰地对齐。您可能会发现这些指南很有帮助。
{
"settings": [
{
"name": "A",
"value": "A_value"
},
{
"name": "C",
"value": "C_value"
}
],
"settings2": [
{
"name": "B",
"value": "B_value"
},
{
"name": "D",
"value": "D_value"
}
]
}