将 gzip 压缩日志文件的特定列表通过管道传输到 zgrep
我在获取一堆 gzip 压缩的 apache 访问日志文件中的行列表时遇到问题。我想要的是仅获取编号为 1 和 2 的日志文件的列表,然后对它们进行 grep 并提取具有特定匹配文本的行。
我最初让它只适用于编号为 1 的访问日志档案。“/pathname”文本是我正在寻找的文本:
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 以返回那些文件中与我的文本匹配的行。我是不是找错树了?
I'm having trouble with getting a list of the lines in a bunch of gzipped apache access log files. What I want is to get a list of the log files numbered 1 and 2 only, then grep through them and extract the lines with specific matching text.
I originally got this to work just for access log archives numbered 1. The "/pathname" text was the text I was looking for:
zgrep /pathname/ access_*.log.1.gz
Since ls does not support regex, I came up with the following to get a listing from the current directory of the files I want:
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|^\./||"
My problem now is taking that file list output and zgrepping through the files to return lines within those files that match my text. Am I barking up the wrong tree here?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试:
或者,使用 find -exec:
Try:
Alternatively, use find -exec:
我没有 apache-logs,因此我使用类似但不相同的模式:
shell 不支持正则表达式,但使用 [123] 或 [1-3] 以及 {1,2,3 } 和 {1..3} 甚至 {o..w} 和 {066..091}。
I don't have apache-logs, so I use a similar, but not identical pattern:
The shell doesn't support regex, but grouping with [123] or [1-3], as well as {1,2,3} and {1..3} or even {o..w} and {066..091}.