Bash 从一些日志中grep一些表达式,并仅选择具有肯定结果的表达式

Bash 从一些日志中grep一些表达式,并仅选择具有肯定结果的表达式,bash,grep,Bash,Grep,我正在使用“zgrep”从一些apache/nginx日志中查找一些ip,我需要一种只对积极结果进行排序的方法 我用这个: for i in `cat /var/tmp/list_of_ip.txt`; do zgrep -arcH $i /webstats/some_website/*/*.2012-10-1{7..9}* ; done 有很多日志文件。我只想知道哪一个会带来积极的结果 其中大多数会在结尾处打印0,表示未找到任何内容,有些会打印匹配数。如何仅选择这些结果并将结果输出到

我正在使用“zgrep”从一些apache/nginx日志中查找一些ip,我需要一种只对积极结果进行排序的方法

我用这个:

for i in `cat /var/tmp/list_of_ip.txt`; do
    zgrep -arcH $i /webstats/some_website/*/*.2012-10-1{7..9}* ;
done
有很多日志文件。我只想知道哪一个会带来积极的结果

其中大多数会在结尾处打印
0
,表示未找到任何内容,有些会打印匹配数。如何仅选择这些结果并将结果输出到文件中


谢谢。

我想我已经拿到了..,只要在那里再扔一个
grep
,文件管理器就会输出结果,结果末尾包含“:0”

for i in `cat /var/tmp/list_of_ip.txt`
do zgrep -arcH $i /webstats/some_website/*/*.2012-10-1{7..9}* | grep -v :0$
done

我想我已经得到了..,只需在那里抛出另一个
grep
,文件管理器就会输出结果,结果末尾包含“:0”

for i in `cat /var/tmp/list_of_ip.txt`
do zgrep -arcH $i /webstats/some_website/*/*.2012-10-1{7..9}* | grep -v :0$
done

您希望避免每次多次解压缩日志文件,因此应使用:

zgrep -l -F -f /var/tmp/list_of_ip.txt /webstats/some_website/*/*.2012-10-1{7..9}*
这将解压缩日志文件一次,以
fgrep
模式(
-F
)运行
grep
,并从文件(
-F/var/tmp/list\u of_IP.txt
)中读取要查找的单词列表(IP地址),并仅列出包含一个或多个匹配IP地址的文件的文件名(
-l
fgrep
模式查找没有元字符的单词;如果您需要元字符,我认为您可以使用
grep-E
(使用
-f
选项)来代替。您可以根据需要添加
-arcH
集合的
-r
选项;在这种情况下,其他的是多余的


在Mac OS X 10.7.5上使用
zgrep(gzip)1.3.12
grep(GNU grep)2.5.1
进行的一些临时测试,如
--version
选项所述。

您希望避免对日志文件进行多次解压缩,因此应使用:

zgrep -l -F -f /var/tmp/list_of_ip.txt /webstats/some_website/*/*.2012-10-1{7..9}*
这将解压缩日志文件一次,以
fgrep
模式(
-F
)运行
grep
,并从文件(
-F/var/tmp/list\u of_IP.txt
)中读取要查找的单词列表(IP地址),并仅列出包含一个或多个匹配IP地址的文件的文件名(
-l
fgrep
模式查找没有元字符的单词;如果您需要元字符,我认为您可以使用
grep-E
(使用
-f
选项)来代替。您可以根据需要添加
-arcH
集合的
-r
选项;在这种情况下,其他的是多余的



在Mac OS X 10.7.5上使用
zgrep(gzip)1.3.12
grep(GNU grep)2.5.1
进行了一些临时测试,如
--version
选项所述。

您能显示当前脚本的几行输出吗?另外,您想查看具有积极影响的IP列表吗,或者有正匹配的文件列表?我需要查看有正匹配的文件。你知道IP有什么关系吗?我的意思是,你只需要在IP.txt的
列表中包含任何IP的所有文件的名称,还是你也需要知道在每个文件中找到哪个IP?我需要所有具有正记录的文件的名称。我的意思是,我需要查看日志中的所有行,这些行都有IP列表中的命中。你能显示当前脚本中的几行输出吗?另外,你想查看命中率为正的IP列表,还是具有正匹配的文件列表?我需要查看具有正匹配的文件。你认为IP重要吗?我的意思是,你只需要在IP.txt的
列表中包含任何IP的所有文件的名称,还是你也需要知道在每个文件中找到哪个IP?我需要所有具有正记录的文件的名称。我的意思是,我需要查看日志中的所有行,这些行都有IP列表中的命中率。+1,用于超出职责范围!就我个人而言,我从来没有使用过zgrep,所以我认为我的小管道可以很好地工作(从技术上讲,它可以),但在现实世界中,像这样的优化可能是分钟、小时或天之间的差异;更不用说磁盘寿命了!是的,-F选项很好,从来都不知道+1是用来超越职责的!就我个人而言,我从来没有使用过zgrep,所以我认为我的小管道可以很好地工作(从技术上讲,它可以),但在现实世界中,像这样的优化可能是分钟、小时或天之间的差异;更不用说磁盘寿命了!是的,-F选项很不错,我从来都不知道。嘿
Quickshift in
非常感谢。事实上,它确实起到了我的作用。我过滤并仅打印包含该列表中ip的文件。谢谢你。你帮一个兄弟接个电话怎么样?嘿
quickshiftin
非常感谢。事实上,它确实起到了我的作用。我过滤并仅打印包含该列表中ip的文件。谢谢你。你帮一个兄弟搞个w/a+1怎么样?