我正在尝试过滤掉一堆apache日志文件,以排除所有具有以下内容的请求:
/static/
(这是我要排除的images / js文件夹)10.xxx.xxx.xxx
(其中x是任意数字 - 我不希望包含内部请求)"GET / HTTP/1.1" 200
以外的任何回复 - 只需要成功我有一个包含多个.gz文件的文件夹。有没有办法运行一个linux命令来执行正确的过滤并将结果保存在一个名为apache_log.txt的文件中?
我的Linux知识非常有限,所以非常感谢任何帮助!
答案 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