[12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.4:8091 http/1.0" 200
现在,我有AWK(来自bash)设置读取整个日志,分析每一行并抓住包含“CONNECT”的每一行,但是,它不能帮助我发现独特的客户端.
这样做的方法是以某种方式过滤它,以便分析每一行的这一部分:
“CONNECT 192.168.2.4:8091 http / 1.0”
如果有一种方法可以获取日志文件中的所有这些行,那么将它们全部进行比较,只计算类似的行.所以,让我们说,例如:
[12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.6:8091 http/2.0" 200 [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.9:8091 http/2.0" 200 [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.2:8091 http/2.0" 200 [12:08:00 +0000] 192.168.2.3 98374 "CONNECT 192.168.2.9:8091 http/2.0" 200
在这种情况下,我需要的答案是3,而不是4.因为2行是相同的,所以只有3个唯一的行.我需要的是使用AWK实现此目的的自动化方法.
如果有人能伸出援助之手会很棒.
解决方法 你可以让awk计算这样的唯一实例:awk -F\" '/CONNECT/ && !seen[] { seen[]++ } END { print length(seen) }' logfile
输出:
3
这将从看到的哈希数组中包含CONNECT的行收集第一个双引号字符串.到达输入结束时,将打印所看到的元素数.
总结以上是内存溢出为你收集整理的linux – 确定bash中具有awk或类似内容的唯一行数全部内容,希望文章能够帮你解决linux – 确定bash中具有awk或类似内容的唯一行数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)