2011-05-10 18 views
2

我无法获得一堆gzipped apache访问日志文件中的行列表。我想要的只是获得编号为1和2的日志文件列表,然后grep通过它们并提取具有特定匹配文本的行。gziped日志文件管道特定列表到zgrep

我最初得到这个用于访问日志档案只是工作编号为1的“/路径”文本中的文字我一直在寻找:

zgrep /pathname/ access_*.log.1.gz 

由于LS不支持正则表达式,我想出了下面从我想要的文件的当前目录得到的列表:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -printf '%P\n' 

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' | sed "s|^\./||" 

我的问题现在正在该文件列表输出,并通过文件zgrepping那些符合我的文字文件中返回行。我在这里咆哮错误的树吗?

回答

2

尝试:

zgrep /pathname/ access_*.log.{1,2}.gz 

另外,使用-exec发现:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \; 
+0

该死的。在处理linux时,答案总是比你想象的要容易。这工作得很好,很笨拙。非常感谢! – ogradyjd 2011-05-10 15:48:15

+0

我使用了第一个,由和。我尝试了第二个命令(使用exec),这也起作用。再次感谢您的答复。 – ogradyjd 2011-05-10 16:02:54

0

我没有Apache的日志,所以我用一个类似,但不完全相同的模式:

ls /var/log/*.[12].gz 

shell不支持正则表达式,但与[123]或[1-3],以及{1,2,3}和{1..3}或甚至{o..w}和{066..091}。

相关问题