有人可以解释重新格式化 awk () | 输出的最佳方法吗?排序 | uniq-c |排序-rg?
Can someone explain the best way to reformat the output of awk () | sort | uniq -c | sort -rg?
我制作了一个用于分析 Windows 日志消息编号的脚本。 uniq -c 数字的输出很难预测,因为 white-space 根据数字的大小而变化。此时我手动删除 white-space.
这是对邮件进行排序和计数的命令:
cat nt2.rawlog | awk 'BEGIN {FS=","} {print ,,,}' | 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(, n, / +/);
printf ("\t%d\t--\t%s %d (%s %s)\n", n[i-1], , n[i], substr(, 2), ) }'
字段分隔符,
做第一级拆分;然后我们将第一个字段拆分为白色space,并将数字提取到n
。 n
中的元素个数取决于该字段是否有前导白色space,所以我们从末尾开始计算最后两个字段。最后一个字段有一个讨厌的前导 space,因此我们从该字段的第二个字符中提取一个子字符串。
我制作了一个用于分析 Windows 日志消息编号的脚本。 uniq -c 数字的输出很难预测,因为 white-space 根据数字的大小而变化。此时我手动删除 white-space.
这是对邮件进行排序和计数的命令:
cat nt2.rawlog | awk 'BEGIN {FS=","} {print ,,,}' | 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(, n, / +/);
printf ("\t%d\t--\t%s %d (%s %s)\n", n[i-1], , n[i], substr(, 2), ) }'
字段分隔符,
做第一级拆分;然后我们将第一个字段拆分为白色space,并将数字提取到n
。 n
中的元素个数取决于该字段是否有前导白色space,所以我们从末尾开始计算最后两个字段。最后一个字段有一个讨厌的前导 space,因此我们从该字段的第二个字符中提取一个子字符串。