linux - 查找和计算在 Web 服务器上访问的唯一文件

标签 linux logging sed grep command

我正在对一个访问日志文件进行排序,试图找到任何具有请求和访问的唯一文件的行。我的日志文件采用这种格式:

66.249.75.4 - - [14/Dec/2015:08:25:18 -0600] "GET /robots.txt HTTP/1.1" 404 1012 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.75.4 - - [14/Dec/2015:08:25:18 -0600] "GET /~robert/class2.cgi HTTP/1.1" 404 1012 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
(so on and so forth...)

我的目标是找到这 14,000 多行中的任何一行,这些行访问了来自 Web 服务器的唯一文件(“GET/etc... etc...”),并计算有多少行这些都存在。我想摆脱访问同一页面的任何这些调用,并且只计算那些不重复的调用。我是 linux 命令行的新手,我正在努力熟悉其中的一些命令及其功能。

我试过用 grep 尝试它,将 cat 输送到 sort -k 7 -u, uniq,和其他一些。这些似乎都没有给我预期的结果。

最佳答案

如果你只是在寻找计数,你可以使用:

cut -d' ' -f6-7 logs.txt  | sort -u | wc -l

关于linux - 查找和计算在 Web 服务器上访问的唯一文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52921830/

相关文章:

linux - 更好的BASH? -BASH和“疯狂”语法

linux - 与 C++ 初始值设定项有关的内存一致性

java - 将类导入 Java 文件

laravel - 使用 Slack Channel 自定义 Laravel Log 的消息

linux - 来自内核模块的调试堆栈

c - union 存储程序的前一部分

java - getCurrentLoggers 在 log4j2 中的模拟是什么

linux - 在 bash 中使用 SED 限制字符串长度

awk - 删除匹配字符后的所有字符

Linux:使用 sed 替换文本文件中制表符分隔行的值