awk 模式匹配输出而不是输入
我正在使用 awk 从 Apache 日志中输出相关的实时数据,如下所示:
tail -f access_log | awk '{print $9, $1, $4, $7}';
效果很好,但它也输出所有图像、CSS 等。所以我想将输出限制为仅 HTML 页面。如果我使用 awk '/.html/ {print $9, $1, $4, $7}'; 它仍然匹配日志文件中的几乎所有行,因为引用者包含“.html”。但我的输出没有引用者,所以有没有办法让 awk 仅在我的输出中匹配,而不是在输入中匹配?
I'm using awk
to output relevant live data from my Apache logs like so:
tail -f access_log | awk '{print $9, $1, $4, $7}';
Works great but it outputs all the images, CSS, etc too. So I'd like to restrict output to only HTML pages. If I use awk '/.html/ {print $9, $1, $4, $7}';
it still matches almost all lines in the logfile because the referrer includes ".html". My output doesn't have the referrer though, so is there a way to get awk
to match in my output only, not the input?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设字段 7 包含您感兴趣的 URL,请使用
我认为正确的字段编号取决于您的日志文件的格式。我可能是错的。
这告诉 awk 仅当第七个字段与后跟“html”的文字点匹配时才打印字段列表。
Assuming that field 7 contains the URL you're interested in, use
I think the right field number depends on the format of your log file. I could be wrong.
That tells awk to print your field list only if the seventh field matches a literal dot followed by "html".