如何用Shell和jq从指定JSON中提取title与pr字段值
使用Shell和jq提取指定字段值
给定的JSON数据如下:
[ { "name": "pr", "value": "2" }, { "name": "title", "value": "pipeline-pr-test" }, { "name": "headhhf", "value": "60dd35gt6" }, { "name": "base", "value": "air" }, { "name": "basha", "value": "7yhfr7e85a0cc" } ]
提取单个字段值
如果只想提取name为pr的value,执行以下命令:
jq '.[] | select(.name == "pr") | .value' input.json
输出结果:
"2"
提取name为title的value,执行:
jq '.[] | select(.name == "title") | .value' input.json
输出结果:
"pipeline-pr-test"
一次性提取两个字段
若要同时获取两个字段并整理成键值对输出:
jq 'from_entries | {pr, title}' input.json
输出结果:
{ "pr": "2", "title": "pipeline-pr-test" }
也可以直接输出两个值的列表:
jq '.[] | select(.name == "pr" or .name == "title") | .value' input.json
输出结果:
"2" "pipeline-pr-test"
从管道输入数据处理
如果JSON数据来自管道传递(比如其他命令的输出),可这样处理:
cat input.json | jq '.[] | select(.name == "pr" or .name == "title") | .value'
内容的提问来源于stack exchange,提问作者Ankur
相关产品推荐
相关产品推荐

