我在获取一堆gzip的apache访问日志文件中的行列表时遇到了麻烦。 我想要的只是获得编号为1和2的日志文件列表,然后grep通过它们并提取具有特定匹配文本的行。
我原来只是为了访问日志归档1而工作。“/ pathname”文本是我正在寻找的文本:
zgrep /pathname/ access_*.log.1.gz
由于ls不支持正则expression式,我想出了以下内容来从我想要的文件的当前目录中获取一个列表:
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通过文件返回符合我的文本的文件中的行。 我在这里叫错了树吗?
尝试:
zgrep /pathname/ access_*.log.{1,2}.gz
或者,使用find -exec:
find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \;
我没有apache日志,所以我使用了一个类似但不相同的模式:
ls /var/log/*.[12].gz
shell不支持正则表达式,但用[123]或[1-3],以及{1,2,3}和{1..3}甚至{o..w}和{066}进行分组。 .091}。