我得到了一份Nessus报告(FILE1.csv),其中包含一堆数据(包括CVE/ Column 7)。我正在将CVE列表与另一个具有相应补丁的CVE列表(FILE2.csv)进行比较。我希望该报告有一个额外的列,显示哪些Nessus插件与来自FILE2.csv的CVE匹配。
我使用split将第7列用分号拆分,然后循环遍历每个值,并将其与FILE2.csv中的值进行比较,目前它仅与最后一个值匹配,我不清楚原因。
这是我目前所拥有的
awk -F',' 'NR==FNR {n=split($7,x,";"); for(i=1;i<n;i++) a[x[i]]=$0; next}; $1 in a {print a[$1] ",TRUE"}' '/C/Temp/FILE1.csv' '/C/Temp/FILE2.csv'FILE1.csv
122111,RHEL 7 : docker (RHSA-2019:0304),High,3/7/2019 8:40,4/1/2019 6:52,2/11/2019 9:00,CVE-2019-5736,0,9.3,100.111.222.1
121514,Google Chrome < 72.0.3626.81 Multiple Vulnerabilities,Critical,2/28/2019 5:00,4/1/2019 7:14,1/29/2019 9:00,CVE-2019-5754;CVE-2019-5755;CVE-2019-5756;CVE-2019-5757;CVE-2019-5758;CVE-2019-5759;CVE-2019-5760;CVE-2019-5761;CVE-2019-5762;CVE-2019-5763;CVE-2019-5764;CVE-2019-5765;CVE-2019-5766;CVE-2019-5767;CVE-2019-5768;CVE-2019-5769;CVE-2019-5770;CVE-2019-5771;CVE-2019-5772;CVE-2019-5773;CVE-2019-5774;CVE-2019-5775;CVE-2019-5776;CVE-2019-5777;CVE-2019-5778;CVE-2019-5779;CVE-2019-5780;CVE-2019-5781;CVE-2019-5782,445,10,100.111.222.2
121514,Google Chrome < 72.0.3626.81 Multiple Vulnerabilities,Critical,2/28/2019 6:24,2/28/2019 6:24,1/29/2019 9:00,CVE-2019-5754;CVE-2019-5755;CVE-2019-5756;CVE-2019-5757;CVE-2019-5758;CVE-2019-5759;CVE-2019-5760;CVE-2019-5761;CVE-2019-5762;CVE-2019-5763;CVE-2019-5764;CVE-2019-5765;CVE-2019-5766;CVE-2019-5767;CVE-2019-5768;CVE-2019-5769;CVE-2019-5770;CVE-2019-5771;CVE-2019-5772;CVE-2019-5773;CVE-2019-5774;CVE-2019-5775;CVE-2019-5776;CVE-2019-5777;CVE-2019-5778;CVE-2019-5779;CVE-2019-5780;CVE-2019-5781;CVE-2019-5782,445,10,100.111.222.3FILE2.csv
CVE-2019-5754
CVE-2019-5755电流输出
121514,Google Chrome < 72.0.3626.81 Multiple Vulnerabilities,Critical,2/28/2019 6:24,2/28/2019 6:24,1/29/2019 9:00,CVE-2019-5754;CVE-2019-5755;CVE-2019-5756;CVE-2019-5757;CVE-2019-5758;CVE-2019-5759;CVE-2019-5760;CVE-2019-5761;CVE-2019-5762;CVE-2019-5763;CVE-2019-5764;CVE-2019-5765;CVE-2019-5766;CVE-2019-5767;CVE-2019-5768;CVE-2019-5769;CVE-2019-5770;CVE-2019-5771;CVE-2019-5772;CVE-2019-5773;CVE-2019-5774;CVE-2019-5775;CVE-2019-5776;CVE-2019-5777;CVE-2019-5778;CVE-2019-5779;CVE-2019-5780;CVE-2019-5781;CVE-2019-5782,445,10,100.111.222.3,TRUE
121514,Google Chrome < 72.0.3626.81 Multiple Vulnerabilities,Critical,2/28/2019 6:24,2/28/2019 6:24,1/29/2019 9:00,CVE-2019-5754;CVE-2019-5755;CVE-2019-5756;CVE-2019-5757;CVE-2019-5758;CVE-2019-5759;CVE-2019-5760;CVE-2019-5761;CVE-2019-5762;CVE-2019-5763;CVE-2019-5764;CVE-2019-5765;CVE-2019-5766;CVE-2019-5767;CVE-2019-5768;CVE-2019-5769;CVE-2019-5770;CVE-2019-5771;CVE-2019-5772;CVE-2019-5773;CVE-2019-5774;CVE-2019-5775;CVE-2019-5776;CVE-2019-5777;CVE-2019-5778;CVE-2019-5779;CVE-2019-5780;CVE-2019-5781;CVE-2019-5782,445,10,100.111.222.3,TRUE期望的输出(请注意最后一列显示布尔值的内容,以确定是否找到匹配项)
122111,RHEL 7 : docker (RHSA-2019:0304),High,3/7/2019 8:40,4/1/2019 6:52,2/11/2019 9:00,CVE-2019-5736,0,9.3,100.111.222.1,FALSE
121514,Google Chrome < 72.0.3626.81 Multiple Vulnerabilities,Critical,2/28/2019 6:24,2/28/2019 6:24,1/29/2019 9:00,CVE-2019-5754;CVE-2019-5755;CVE-2019-5756;CVE-2019-5757;CVE-2019-5758;CVE-2019-5759;CVE-2019-5760;CVE-2019-5761;CVE-2019-5762;CVE-2019-5763;CVE-2019-5764;CVE-2019-5765;CVE-2019-5766;CVE-2019-5767;CVE-2019-5768;CVE-2019-5769;CVE-2019-5770;CVE-2019-5771;CVE-2019-5772;CVE-2019-5773;CVE-2019-5774;CVE-2019-5775;CVE-2019-5776;CVE-2019-5777;CVE-2019-5778;CVE-2019-5779;CVE-2019-5780;CVE-2019-5781;CVE-2019-5782,445,10,100.111.222.2,TRUE
121514,Google Chrome < 72.0.3626.81 Multiple Vulnerabilities,Critical,2/28/2019 6:24,2/28/2019 6:24,1/29/2019 9:00,CVE-2019-5754;CVE-2019-5755;CVE-2019-5756;CVE-2019-5757;CVE-2019-5758;CVE-2019-5759;CVE-2019-5760;CVE-2019-5761;CVE-2019-5762;CVE-2019-5763;CVE-2019-5764;CVE-2019-5765;CVE-2019-5766;CVE-2019-5767;CVE-2019-5768;CVE-2019-5769;CVE-2019-5770;CVE-2019-5771;CVE-2019-5772;CVE-2019-5773;CVE-2019-5774;CVE-2019-5775;CVE-2019-5776;CVE-2019-5777;CVE-2019-5778;CVE-2019-5779;CVE-2019-5780;CVE-2019-5781;CVE-2019-5782,445,10,100.111.222.3,TRUE发布于 2019-09-13 03:54:22
如果我理解正确的话,在处理FILE1.csv之前处理FILE2.csv会更容易一些,这样当您遇到来自FILE1.csv的每个条目时,就会有必要的信息来打印真/假布尔值。因此,稍微修改一下脚本,这只是在存储的FILE2.csv值数组中查找split中的每个值
awk -F, '
NR == FNR {
a[$1] = 1
next
}
{
n = split($7, x, ";")
for (i = 1; i < n; i++)
if (x[i] in a) {
print $0 ",TRUE"
next
}
print $0 ",FALSE"
}' FILE2.csv FILE1.csvhttps://stackoverflow.com/questions/57913155
复制相似问题