我需要从JSON编码文件中提取变量,并将其分配给Bash中的变量。
摘录...来自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
答案 0 :(得分:7)
最好使用JSON解析器。 http://json.org/列出了许多,其中两个用于BASH shell。
答案 1 :(得分:1)
有强大的命令行JSON工具jq
。
提取单个值很简单:
variableA=$(jq .VariableA file.json)
对于以逗号分隔的数组内容,请尝试使用
variableB=$(jq '.VariableB | @csv' file.json)
或
variableB=$(jq '.VariableB | .[]' file.json | tr '\n' ',' | head -c-1)
答案 2 :(得分:0)
如果你愿意使用Perl,他们有一个'open()'函数,它将使用json函数'to_json'来管道文件。如果你想提取json,你可以使用'from_json'函数。你可以在这里查看:
http://search.cpan.org/~rjbs/perl-5.16.0/lib/open.pm
http://metacpan.org/pod/JSON#to_json
http://metacpan.org/pod/JSON#from_json(您也可以尝试使用解码json)