如何筛选含/不含jira.assetid的JSON子结构并输出指定字段
筛选含/不含
jira.assetid的设备 1. 筛选包含jira.assetid的设备(输出id和对应assetid值)
使用以下jq命令,将customProperties转换为键值对后提取目标字段,输出结构化结果:
cat devices.txt | jq -r '.data.items[] | select(.customProperties[]?.name == "jira.assetid") | {id: .id, "jira.assetid": (.customProperties | from_entries)["jira.assetid"]}'
输出示例:
{"id":2584,"jira.assetid":"1"} {"id":2703,"jira.assetid":"5"}
如果需要纯文本分行输出id和assetid,可改用:
cat devices.txt | jq -r '.data.items[] | select(.customProperties[]?.name == "jira.assetid") | "\(.id) \(.customProperties[] | select(.name == "jira.assetid").value)"'
输出示例:
2584 1 2703 5
2. 筛选不包含jira.assetid的设备(输出id和jira.assetid字段)
使用以下命令,过滤掉存在该属性的设备,同时明确jira.assetid字段值为null:
cat devices.txt | jq -r '.data.items[] | select(any(.customProperties[]; .name == "jira.assetid") | not) | {id: .id, "jira.assetid": null}'
输出示例:
{"id":2603,"jira.assetid":null}
内容的提问来源于stack exchange,提问作者Jeroen G
相关产品推荐
相关产品推荐

