[英]How to separate all the keys and values and store in an array using shell script with jq parser
我有一个像这样的JSON文件:
{
"images1" :
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-Small@2x.png",
"scale" : "2x"
},
"images2" :
{
"size" : "29x30",
"idiom" : "iphone2",
"filename" : "Icon-Small@2x.png2",
"scale" : "22x"
}
}
我将传递JSON对象名称作为输入。 因此,如果我知道“ images1”是对象,则需要将该对象的所有键和值存储在两个单独的数组中,以便可以在进一步处理中使用它们。
任何帮助是极大的赞赏。 谢谢
您可以使用以下内容:
jq ".$1 | { keys: keys_unsorted, values: [.[]] }"
其中$1
应该提供您要处理的项目的名称(请注意,这是假设您在脚本中使用此名称。您可能想要使用fedorqui的替代方法)。
这将产生一个对象,其keys
属性将是按键阵列$1
和values
相关联的值的数组:
$ echo '{
"images1" :
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-Small@2x.png",
"scale" : "2x"
},
"images2" :
{
"size" : "29x30",
"idiom" : "iphone2",
"filename" : "Icon-Small@2x.png2",
"scale" : "22x"
}
}' | jq ".images1 | { keys: keys_unsorted, values: [.[]] }"
{
"keys": [
"size",
"idiom",
"filename",
"scale"
],
"values": [
"29x29",
"iphone",
"Icon-Small@2x.png",
"2x"
]
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.