【问题标题】:json; duplicate keys and filter based on valuejson;重复键和基于值的过滤器
【发布时间】:2018-10-16 16:29:54
【问题描述】:

如果addrtypeipv4vendor 如果addrtypemac,则尝试根据addrtype 过滤json 并打印addr

到目前为止,我有'"\(.addr) \(.addrtype) \(.vendor)"',结果是:

"192.168.1.235 ipv4 null"
"18:B4:30:8D:AE:BA mac Nest Labs"
"192.168.1.236 ipv4 null"
"18:B4:30:8D:B6:18 mac Nest Labs"
"192.168.1.238 ipv4 null"
"0C:EA:C9:AF:4F:72 mac null"
"192.168.1.254 ipv4 null"
"0C:EA:C9:AF:4F:70 mac null"

期望的结果:

192.168.1.235 - Nest Labs
192.168.1.236 - Nest Labs
192.168.1.238 - 
192.168.1.254 - 

数据:

[
  {
    "addr": "192.168.1.235",
    "addrtype": "ipv4"
  },
  {
    "addr": "18:B4:30:8D:AE:BA",
    "addrtype": "mac",
    "vendor": "Nest Labs"
  }
]
[
  {
    "addr": "192.168.1.236",
    "addrtype": "ipv4"
  },
  {
    "addr": "18:B4:30:8D:B6:18",
    "addrtype": "mac",
    "vendor": "Nest Labs"
  }
]
[
  {
    "addr": "192.168.1.238",
    "addrtype": "ipv4"
  },
  {
    "addr": "0C:EA:C9:AF:4F:72",
    "addrtype": "mac"
  }
]
[
  {
    "addr": "192.168.1.254",
    "addrtype": "ipv4"
  },
  {
    "addr": "0C:EA:C9:AF:4F:70",
    "addrtype": "mac"
  }
]

【问题讨论】:

  • 您陈述的要求与给定数据的陈述期望不符。请澄清。

标签: json jq


【解决方案1】:

这会产生预期的结果:

jq -sr '.[] | "\(.[0].addr) - \(.[1].vendor//"")"' file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多