2012-08-11 75 views
3

我需要从JSON编码文件中提取变量并将其分配给Bash中的变量。使用bash提取JSON变量

摘录......从file.json

"VariableA": "VariableA data", 
    "VariableB": [ 
     "VariableB1", 
     "VariableB2", 
     "VariableB3", 
     "VariableB3" 
    ], 

我在什么地方这个

variableA=$(fgrep -m 1 "VariableA" file.json) 

得到,但它返回整条生产线。我只想要数据

对于VariableB,我需要用逗号分隔值替换列表。

我已经看过awk,sed,grep,regexpressions,并且确实给出了学习曲线......需要知道使用哪一个或更好的解决方案。

感谢您的建议......但是这是完美的 的git://github.com/kristopolous/TickTick.git

回答

1

有强大的命令行工具JSON jq

提取单个值很简单:

variableA=$(jq .VariableA file.json) 

对于逗号分隔的数组内容试试这个

variableB=$(jq '.VariableB | @csv' file.json) 

variableB=$(jq '.VariableB | .[]' file.json | tr '\n' ',' | head -c-1)