最喜欢观众吃尾巴-f 流

最喜欢观众吃尾巴-f 流

我正在寻找一个使用行流(通常为 tail -f)的命令行工具并对其进行计数,例如: tail -f /var/log/apache2/access.log | cut -d' ' -f1 | SOME_COMMAND 并显示如下顶部视图:

52 xxx.xxx.xxx.xxx 12 xxx.xxx.xxx.xxx 6 xxx.xxx.xxx.xxx 2 xxx.xxx.xxx.xxx

它非常方便,例如与这个 sh 关联:

#!/bin/sh
# NCSA structure :
#IP - - [DATE] "METHOD URL HTTP/VERSION" STATUS LENGTH "REFERER" "USER AGENT"
QUERY=""
while [ "$1" ] ; do
  case "$1" in
      ip) QUERY="$QUERY"'\1' ;;
      date) QUERY="$QUERY"'\4' ;;
      method) QUERY="$QUERY"'\5' ;;
      url) QUERY="$QUERY"'\6' ;;
      version) QUERY="$QUERY"'\7' ;;
      status) QUERY="$QUERY"'\8' ;;
      length) QUERY="$QUERY"'\9' ;;
      referer) QUERY="$QUERY"'\10' ;; # Does not work...
      useragent) QUERY="$QUERY"'\11' ;; # Does not work
      *) QUERY="$QUERY""$1" ;;
  esac
  shift
done
sed -r 's/^([^ ]+) ([^ ]+) ([^ ]+) \[([^]]+)] "([^ ]+) ([^"]+) HTTP\/([^"]+)" ([^ ]+) ([^ ]+) "([^"]+)" "([^"]+)"$/'"$QUERY"'/g'

使用我正在搜索的这个命令和我的脚本,你可以执行以下操作:cat somelog | ncsa.sh url | SOME_COMMAND 并获取你查看过的 url'z、referer 或你想要的内容的顶部

(如果有人可以修复将 \10 解释为 \1 后跟 0 的错误... :p)

祝你有美好的一天 !

答案1

解决该问题的程序的第一个版本提交于此处:

http://github.com/JulienPalard/logtop

答案2

您是否正在寻找uniq-ctr

cat /var/log/apache2/access.log | cut -d' ' -f1 | uniq -c | tr -s "\n " " "

来自独特手册页:

Filter  adjacent  matching lines from INPUT (or standard input), writing to OUTPUT (or standard output).

       -c, --count
              prefix lines by the number of occurrences

来自tr手册页:

Translate, squeeze, and/or delete characters from standard input, writing to standard output.

   -s, --squeeze-repeats
          replace  each  input  sequence  of  a repeated character that is listed in SET1 with a single occurrence of that character

拥有它已排序后裔:

cat /var/log/apache2/access.log | cut -d' ' -f1 | uniq -c | sort -gr | tr -s "\n " " "

输出示例(我混淆了IP):

 87 71.255.255.11 54 95.255.222.255 50 84.255.255.120 50 178.255.255.14 49 92.255.255.240 49 91.255.36.215 49 255.52.126.184 49 217.255.110.23 49 216.255.45.4 49 255.8.27.5

笔记:我的示例使用因为我不认为使用尾部-f会起作用,因为没有文件结尾,但你也可以使用尾部-100例如并定期进行。

相关内容