Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用linux过滤apache文件_Linux_Apache_Logging - Fatal编程技术网

使用linux过滤apache文件

使用linux过滤apache文件,linux,apache,logging,Linux,Apache,Logging,我正在尝试筛选apache日志文件堆,以排除具有以下内容的所有请求: 模式/static/(这是我想要排除的images/js文件夹) 10.xxx.xxx.xxx(其中x是任意数字-我不希望包含内部请求) 除了“GET/HTTP/1.1”200之外的任何响应-只希望成功 我有一个包含多个.gz文件的文件夹。有没有一种方法可以运行一个linux命令来进行适当的过滤并将结果保存在一个名为apache_log.txt的文件中 我的linux知识非常有限,因此非常感谢您的帮助 对于每个文件*.gz

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

  • 模式
    /static/
    (这是我想要排除的images/js文件夹)
  • 10.xxx.xxx.xxx
    (其中x是任意数字-我不希望包含内部请求)
  • 除了
    “GET/HTTP/1.1”200
    之外的任何响应-只希望成功
我有一个包含多个.gz文件的文件夹。有没有一种方法可以运行一个linux命令来进行适当的过滤并将结果保存在一个名为apache_log.txt的文件中


我的linux知识非常有限,因此非常感谢您的帮助

对于每个文件*.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

谢谢你的快速回复。对于目录中的每个文件(似乎在文件名后附加了一个.Z),我都会遇到此错误。zcat:access_log.2011072803.gz.Z:没有这样的文件或目录忘记了
do
,抱歉:请在*.gz中为f尝试
;做ls-l$f;完成
以列出文件。这有效地为我提供了一个列表(不完整)-rwxr-xr-x 1 ChrisPayner staff 463010049 12 Jul 00:01访问日志2011071103.gz-rwxr-xr-x 1 ChrisPayner staff 502073947 12 Aug 10:02访问日志2011071203.gz-rwxr-xr-x 1 ChrisPayner staff 468224970 14 Jul 00:01访问日志2011071303.gz-rwxr-xr-xr-x 1 ChrisPayner staff 464609043 12 Aug 10:02访问日志2011071403.gz-rwxr-xr-xr-x-x 1chrispaynter staff 483168852 16 Jul 00:00 access_log.2011071503.gz因此,
for
命令没有理由不与
zcat
命令一起工作,而是神奇地将
.Z
附加到文件名中。我只是用zmore尝试了相同的命令,结果成功了。我应该提到的是,我使用的是mac电脑,但我不确定这是否会产生影响。我能再请你帮个忙吗?如果我只想输出请求的IP地址,请告诉我要添加什么?