关于nginx搜索命令结果不同的问题

Shell 自己在练习时遇到了这样的问题, 但没有找出原因. 麻烦大佬解答:

目标: 搜索出nginx日志中/topics开头的网址访问数.

命令1:

awk '{print $7}' nginx.log | awk -F/ '{print $2}' | sort | uniq -c | sort -rn | head -3

结果:

命令2:

awk '{print $7}' nginx.log | sed -E 's#^/([^/]*)/.*#\1#' | sort | uniq -c | sort -rn | head -3

结果:

命令3:

awk '$7~/^\/topics/{print $7}' nginx.log | wc -l

结果:

我觉得正确的是应该是657条, 但是命令1, 2是漏掉了哪些情况? 可否大佬帮忙解答一下. 谢谢!

把第一个sort之前的命令结果保存下,然后用diff看下差别。

谢谢. 找到原因了, 有些情况没考虑到(如: topics?page=63, topics.fields_for_li). 排序统计后, 这些情况的统计没有合并到topics中, 所以少了.

awk '{print $7}' nginx.log | awk 'BEGIN{FS="[/?.]"}{print $2}' |  sort | uniq -c | sort -rn | head -3