bash - 使用 JQ 和类似过滤器过滤 bash 中的 IPv4 和 IPv6 地址
问题描述
我正在尝试从 Cloudflare 防火墙规则中提取 IPv4 和 IPv6 地址,以便在另一个命令中使用。
json
这是我要过滤的完整示例响应:
{
"result": {
"id": "78839c481cd8424fa8f0f06abd33b55f",
"paused": false,
"description": "Test",
"action": "block",
"priority": 1,
"filter": {
"id": "68f2efc4fa6e43f584dd4b60aca09901",
"expression": "(ip.src in {192.168.1.1 192.168.1.2 2408:14c:dc83:9119:f9f6:c105:923:a5e3})",
"paused": false
},
"created_on": "2020-11-02T13:48:31Z",
"modified_on": "2020-11-02T13:49:02Z"
},
"success": true,
"errors": [],
"messages": []
}
我只想提取表达式字段内的任何 IPv4 或 IPv6 地址,所以在这种情况下,192.168.1.1 192.168.1.2
我怎样才能做到这一点bash
?
谢谢!
解决方案
使用您的 JSON,调用如下:
jq -r '.result.filter.expression
| capture("{(?<ips>[^}]*)}").ips' example.json
将产生 IP 地址字符串:
192.168.1.1 192.168.1.2 2408:14c:dc83:9119:f9f6:c105:923:a5e3
其余的应该很容易航行。
推荐阅读
- java - Firebase 中的查询 - 云数据库
- jquery - 如何获取复选框的总价值并将其传递到第二页
- javascript - 自动从 JavaScript 中的字符串中获取日期并返回带有格式化日期的相同字符串
- mysql - 创建平衡列
- java - 我使用 Unity 制作了一个 apk AutoInstall
- java - InputStream 如何转换为 apache.poi Workbook?
- java - Spring @Configuration 运行时注入
- javascript - 正则表达式括号之间的 HTML 恢复问题
- ruby-on-rails - 更新 Heroku 上的 PostGIS 扩展
- c# - 仅将更改应用于特定表