如何使用JQ按自定义严重级别排序软件漏洞数组?
用JQ按自定义严重级别排序漏洞数组
要实现按CRITICAL > HIGH > MEDIUM > LOW的自定义顺序排序漏洞数组,你可以借助优先级映射对象配合sort_by()函数完成,具体方案如下:
核心思路
创建一个映射对象,给每个严重级别分配优先级数值(数值越小优先级越高),让sort_by()根据该数值排序,而非依赖字符串的默认字母顺序。
具体JQ命令
针对你提供的JSON结构,执行以下命令即可完成排序:
.vulnerabilities |= sort_by( {"CRITICAL":0, "HIGH":1, "MEDIUM":2, "LOW":3}[.Severity] )
命令解释
{"CRITICAL":0, "HIGH":1, "MEDIUM":2, "LOW":3}:定义严重级别的优先级映射,CRITICAL对应0(最高优先级),LOW对应3(最低优先级)。[.Severity]:从每个漏洞对象中提取Severity字段,映射为对应的优先级数值。sort_by(...):根据映射后的数值对数组进行升序排序,最终得到自定义的严重级别顺序。
效果验证
将你提供的JSON输入用上述命令处理后,输出的vulnerabilities数组顺序会变为:
[ { "CVEID": "CVE-2022-29458", "Product": "ncurses-base", "Severity": "CRITICAL", "Version": "6.3-2", "Description": "example" }, { "CVEID": "CVE-2022-29458", "Product": "ncurses-base", "Severity": "HIGH", "Version": "6.3-2", "Description": "example" }, { "CVEID": "CVE-2022-29458", "Product": "ncurses-base", "Severity": "MEDIUM", "Version": "6.3-2", "Description": "example" }, { "CVEID": "CVE-2022-29458", "Product": "ncurses-base", "Severity": "LOW", "Version": "6.3-2", "Description": "example" } ]
内容的提问来源于stack exchange,提问作者z3plike
相关产品推荐
相关产品推荐

