有没有一种有效的方法来使用jq查询macaddress.io json Mac数据库,以找到网络汽车制造商。该数据库可从https://macaddress.io/database-download免费获得(选择json +下载)>
"oui": "00:50:C2:73:E", "isPrivate": false, "companyName": "Quantec Networks GmbH", "companyAddress": "Rieselwiese 1 Vienenburg Niedersachsen 38690 DE", "countryCode": "DE", "assignmentBlockSize": "IAB", "dateCreated": "2007-05-14", "dateUpdated": "2015-08-29" }
对于DeLL计算机,我可以这样查询:
cat macaddress.io-db.json |jq 'select(.oui|test("14:18:77"))'
不幸的是,对于上面的记录,有多个匹配公司名称的00:50:C2,并且您需要提供更多位数才能获得唯一的正确答案。
丑陋的方法是在完整的MAC地址上循环,删除一位直到查询成功。
因此,对于DeLL计算机,这将循环6次,直到得到结果:让我们以14:18:77:34:23:12 MAC为例:
1st query: 14:18:77:34:23:1 => no answer 2nd query: 14:18:77:34:23 => no answer 3rd query: 14:18:77:34:2 => no answer 4th query: 14:18:77:34 => no answer 5th query: 14:18:77:3 => no answer 6th query: 14:18:77 => we get the DeLL record: { "oui": "14:18:77", "isPrivate": false, "companyName": "Dell Inc", "companyAddress": "One Dell way Round Rock 78682 US", "countryCode": "US", "assignmentBlockSize": "MA-L", "dateCreated": "2015-06-13", "dateUpdated": "2019-07-01" }
我想知道是否有一种更聪明的方法在给定完整MAC的情况下可以返回最佳匹配。
例如:14:18:77:34:23:12 MAC将匹配14:18:77记录(DeLL)
并且00:50:C2:73:E3:27 MAC将匹配00:50:C2:73:E记录,而不是00:50:C2:73:F记录。
是否有任何想法/技巧/ jq命令来完成上述“软/智能”匹配?
((给定目标,使用完整的MAC(大写或小写),以检索companyName字段;如果找不到,则检索“未知”(或“”)。)
请注意,oui字段是唯一的,没有子集(如果存在XX:YY:ZZ:TT,则不能有XX:YY:ZZ(但可以有XX:YY:ZZ:UU))。知道这一点,则意味着最长的匹配是唯一的(单条记录)。
有没有一种有效的方法来使用jq查询macaddress.io json Mac数据库,以找到网络汽车制造商。该数据库可从https://macaddress.io/database-download(选择json ...
获得合理有效解决方案的关键是,首先使用inputs
并使用jq的-n命令行选项来收集合理的候选对象。考虑到这一点,我们可以编写: