以下是我需要在bash中解析的数据格式。假设bash变量保存了这些数据,我需要能够在xyz
中提取值。此外,我还需要能够使用aa
单独提取bb
和xyz
。
"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"
}
对此有任何帮助表示赞赏!
答案 0 :(得分:1)
shell不是编写常规解析器的好语言。也就是说,如果您的输入格式或多或少完全如图所示,每行最多一对"name": "value"
对,请尝试以下操作:
$ eval $(sed -n 's/"\([^"]*\)"[ :]*"\([^"]*\)".*/\1=\2/p' inputfile)
$ echo $aa
0987654321
$ echo $bb
c.b.a