【问题标题】:sort unique urls from log从日志中排序唯一的 url
【发布时间】:2011-11-17 16:06:09
【问题描述】:

我需要从网络日志中获取唯一的 URL,然后对它们进行排序。我正在考虑使用 grep、uniq、sort 命令并将其输出到另一个文件

我执行了这个命令:

cat access.log | awk '{print $7}' > url.txt

然后只获取唯一的并对其进行排序:

cat url.txt | uniq | sort > urls.txt

问题是我可以看到重复文件,即使文件已排序,这意味着我的命令有效。为什么?

【问题讨论】:

    标签: shell sorting logging uniq


    【解决方案1】:

    uniq | sort 不起作用:uniq 删除连续重复。

    正确的方法是sort | uniq 或更好的sort -u。因为只产生了一个进程。

    【讨论】:

      【解决方案2】:

      uniq 需要对其输入进行排序,但您在 uniq 之后排序。试试:

      $ 排序 -u urls.txt

      【讨论】:

        【解决方案3】:

        试试这样的:

        cat url.txt | sort | uniq
        

        【讨论】:

          【解决方案4】:

          对于 nginx 访问日志,这给出了被调用的唯一 URL:

           sed -r "s/.*(GET|POST|PUT|DELETE|HEAD) (.*?) HTTP.*/\2/" /var/log/nginx/access.log | sort | uniq -u
          

          参考: https://www.guyrutenberg.com/2008/08/10/generating-url-list-from-access-log-access_log/

          【讨论】:

            猜你喜欢
            • 2019-06-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-09-12
            • 2017-08-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多