json - jq 返回匹配一个字段的所有数组
问题描述
我正在尝试获取与元素匹配的所有数组,但无法返回所有内容。
数据
cat testerr.json | jq .''
{
"circuitIdNum": 1226,
"description": "9287-customer:vpn-2001226-(R1-Loopback0)",
"interfaceId": "1040",
"ipv4": {
"aclEgress": "rot-out",
"addr": "55.44.53.191/31",
"bgpNeighbor": "33.567.53.190"
},
"loadInterval": 30,
"remoteRouter": "R1-Loopback0",
"shortName": "rot",
"tunnel": {
"destination": "94.252.78.14",
"source": "66.52.5.4"
}
}
{
"circuitIdNum": 1227,
"description": "9287-customer:vpn-2001227-(R2-Loopback0)",
"interfaceId": "1041",
"ipv4": {
"aclEgress": "rot-out",
"addr": "23.77.175.253/31",
"bgpNeighbor": "21.44.175.252"
},
"loadInterval": 30,
"remoteRouter": "R2-Loopback0",
"shortName": "rot",
"tunnel": {
"destination": "22.22.18.15",
"source": "1.5.55.5"
}
}
这种工作,但只提供目的地和来源。
cat testerr.json | jq .'tunnel | select(.source | contains ("1.5.55."))'
{
"destination": "22.22.18.15",
"source": "1.5.55.5"
}
而不是只回复隧道部分,我希望它返回完整的数组。
{
"circuitIdNum": 1227,
"description": "9287-customer:vpn-2001227-(R2-Loopback0)",
"interfaceId": "1041",
"ipv4": {
"aclEgress": "rot-out",
"addr": "23.77.175.253/31",
"bgpNeighbor": "21.44.175.252"
},
"loadInterval": 30,
"remoteRouter": "R2-Loopback0",
"shortName": "rot",
"tunnel": {
"destination": "22.22.18.15",
"source": "1.5.55.5"
}
}
我的尝试无处不在。我不知道如何调用顶层和搜索元素的几个级别。谢谢
解决方案
只需让您select()
引用嵌套字段,这将返回整个顶级元素。
$ cat testerr.json | jq 'select(.tunnel.source | contains ("1.5.55."))'
{
"circuitIdNum": 1227,
"description": "9287-customer:vpn-2001227-(R2-Loopback0)",
"interfaceId": "1041",
"ipv4": {
"aclEgress": "rot-out",
"addr": "23.77.175.253/31",
"bgpNeighbor": "21.44.175.252"
},
"loadInterval": 30,
"remoteRouter": "R2-Loopback0",
"shortName": "rot",
"tunnel": {
"destination": "22.22.18.15",
"source": "1.5.55.5"
}
}
推荐阅读
- python - 我可以使用直接 numpy 方法基于单维 numpy 数组创建多维 numpy 数组吗
- javascript - 无法使用 Google App 脚本循环到 Google 电子表格中的列末尾
- shell - 无法使用 nohup 命令运行 Shell 脚本
- audio - 哪个工具可以根据字幕时间戳将音频文件切割成更小的持续时间段?
- c# - 面板覆盖未绘制在标签上
- javascript - 取回用户填写的信息以供第二次使用(使用 cookie)
- laravel - laravel 查看组件
- reactjs - 错误:“重新渲染过多。React 限制渲染次数以防止无限循环”
- c - 单链表实现的函数调用问题
- substrate - Parity Substrate 教程中的依赖关系中断