我已经制作了一个脚本,用于分析Windows日志消息编号。uniq-c数字的输出很难预测,因为根据数字的大小有不同的空格。此时,我手动删除空白。
这是对消息进行排序和计数的命令:
cat nt2.rawlog | awk 'BEGIN {FS=","} {print $3,$4,$6,$7}' | sort | uniq -c | sort -rg >> ~/tempNT2.report
这是我对示例输出的最好尝试:
21340 4624,Windows-Security-Audit-Log,Success Audit,Logon
1209 4658,Windows-Security-Audit-Log,Success Audit,Privileged Logon
我想要的输出是:
[tab]21340[tab]--[tab]Security Audit Log 4624 (Logon Success Audit)
[tab]1209[tab]--[tab]Security Audit Log 4658 (Privileged Logon Success Audit)
最佳答案
有点像
awk -F , '{ i = split($1, n, / +/);
printf ("\t%d\t--\t%s %d (%s %s)\n", n[i-1], $2, n[i], substr($4, 2), $3) }'
字段分隔符
,
执行第一级拆分;然后在空白处拆分第一个字段,并将数字提取到n
中。n
中元素的数量取决于字段是否有前导空格,因此我们从末尾开始计算最后两个字段。最后一个字段有一个讨厌的前导空间,因此我们从该字段的第二个字符中提取一个子字符串。