使用linux过滤apache文件

时间:2011-08-18 11:41:26

标签: linux apache logging

我正在尝试过滤掉一堆apache日志文件,以排除所有具有以下内容的请求:

  • 模式/static/(这是我要排除的images / js文件夹)
  • 10.xxx.xxx.xxx(其中x是任意数字 - 我不希望包含内部请求)
  • "GET / HTTP/1.1" 200以外的任何回复 - 只需要成功

我有一个包含多个.gz文件的文件夹。有没有办法运行一个linux命令来执行正确的过滤并将结果保存在一个名为apache_log.txt的文件中?

我的Linux知识非常有限,所以非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

对于每个文件* .gz,解压缩并过滤掉不需要的静态和本地,并过滤所需的“GET 200”,并将其附加到结果文件中。

for f in *.gz ; do zcat $f | grep -v '/static/' | grep -v '10\.[0-9]\+\.\.[0-9]\+\.[0-9]\+' | grep 'GET / HTTP/1.1" 200' >> apache_log.txt ; done

或多行。

for f in *.gz
do
    zcat $f \
        | grep -v '/static/' \
        | grep -v '10\.[0-9]\+\.\.[0-9]\+\.[0-9]\+' \
        | grep 'GET / HTTP/1.1" 200' \
        >> apache_log.txt
done