通过sed从json文件获取一对值

时间:2016-06-30 15:25:54

标签: json bash sed

我想从JSON文件中获取值: 例如:

{"name":"ghprbActualCommitAuthorEmail","value":"test@gmail.com"},{"name":"ghprbPullId","value":"226"},{"name":"ghprbTargetBranch","value":"master"},

我的期望是: 我想获得test@gmail.com226master

1 个答案:

答案 0 :(得分:3)

sed是处理JSON的错误工具。

假设您有一个文件tmp.json 有效 JSON,如

[{"name":"ghprbActualCommitAuthorEmail","value":"test@gmail.com"}, 
 {"name":"ghprbPullId","value":"226"},
 {"name":"ghprbTargetBranch","value":"master"}]

您可以使用jq '.[].value' tmp.son

如果文件包含

{"name":"ghprbActualCommitAuthorEmail","value":"test@gmail.com"}
{"name":"ghprbPullId","value":"226"}
{"name":"ghprbTargetBranch","value":"master"}

(即,只有3个独立JSON对象的流,您可以使用jq '.value' tmp.json,因为jq会将过滤器连续应用于每个对象。您也可以使用jq -s '.[].value' tmp.son,其中-s标志告诉jq首先将整个输入读入数组。这使得您可以在两种情况下使用相同的过滤器。