创建列表键对象shell Linux

时间:2018-05-07 17:58:49

标签: json linux bash shell

我正在尝试编写一个脚本来从linux终端的文件中获取对象的所有键列表。

该文件包含以下内容:

{
    "general" : {
       "street" : "Av. Roadmin",
       "name" : "Batman",
       "phone" : "125478",
       "pets": {
                   "dog":"Hurry",
                   "cat": "Aria"
               }
       }
}    

我想要下一个输出:

general.street
general.name
general.phone
general.pets.dog
general.pets.car

有人可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用jq,如下所示:

jq -r 'paths(scalars)|join(".")' file.json

来自:https://github.com/stedolan/jq/issues/78#issuecomment-348818517

如果要打印键及其值:

jq -r 'paths(scalars) as $p|"\($p|join(".")): \(getpath($p))"' file.json 
general.street: Av. Roadmin
general.name: Batman
general.phone: 125478
general.pets.dog: Hurry
general.pets.cat: Aria