需要在bash中解析数据

时间:2013-12-02 10:19:13

标签: bash

以下是我需要在bash中解析的数据格式。假设bash变量保存了这些数据,我需要能够在xyz中提取值。此外,我还需要能够使用aa单独提取bbxyz

"params": {
    "children": [
           {
                "abc": {
                    "pp": "1234567890",
                    "qq": "a.b.c"
                },
                "xyz": {
                    "aa": "0987654321",
                    "bb": "c.b.a"
                },
                "def": "p.q.r"
            }
        ],
        "def": "e.f.g.h"
    }

对此有任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

shell不是编写常规解析器的好语言。也就是说,如果您的输入格式或多或少完全如图所示,每行最多一对"name": "value"对,请尝试以下操作:

$ eval $(sed -n 's/"\([^"]*\)"[ :]*"\([^"]*\)".*/\1=\2/p' inputfile)
$ echo $aa
0987654321
$ echo $bb
c.b.a