将 gzip 压缩日志文件的特定列表通过管道传输到 zgrep

发布于 2024-11-06 05:34:11 字数 524 浏览 1 评论 0原文

我在获取一堆 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冰雪之触 2024-11-13 05:34:11

尝试:

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

或者,使用 find -exec:

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

Try:

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

Alternatively, use find -exec:

find . -maxdepth 1 -type f -regex '\./access.+\.log\.[1|2]\.gz' -exec zgrep /path/ {} \;
心病无药医 2024-11-13 05:34:11

我没有 apache-logs,因此我使用类似但不相同的模式:

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

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:

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

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}.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文