JSON;дубликаты ключей и фильтр по значению - PullRequest
0 голосов
/ 16 октября 2018

Попытка отфильтровать JSON на основе addrtype и печать addr, если addrtype равно ipv4 и vendor, если addrtype равно mac.

Пока у меня есть '"\(.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"
  }
]

1 Ответ

0 голосов
/ 16 октября 2018

Это дает желаемый результат:

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