首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用sed切割日志文件

使用sed切割日志文件
EN

Stack Overflow用户
提问于 2020-02-10 02:50:22
回答 1查看 46关注 0票数 1

我正在跟踪一个日志文件,并使用grep来删除我想要的信息行,现在我想通过管道将其传递到sed中,以减少其本身的开销。

例如,原始日志为:

代码语言:javascript
运行
复制
Feb  9 17:48:21 dnsmasq[884]: query[A] captive.g.aaplimg.com from 192.168.178.21
Feb  9 17:48:21 dnsmasq[884]: forwarded captive.g.aaplimg.com to 8.8.4.4
Feb  9 17:48:21 dnsmasq[884]: reply captive.g.aaplimg.com is 17.253.55.202
Feb  9 17:48:21 dnsmasq[884]: reply captive.g.aaplimg.com is 17.253.55.204

然后我使用grep --line-buffered " query“来获取查询行:

代码语言:javascript
运行
复制
Feb  9 18:42:21 dnsmasq[884]: query[A] captive.g.aaplimg.com from 192.168.178.21
Feb  9 18:42:40 dnsmasq[884]: query[A] sb.scorecardresearch.com from 192.168.178.21
Feb  9 18:42:51 dnsmasq[884]: query[A] captive.g.aaplimg.com from 192.168.178.21
Feb  9 18:43:06 dnsmasq[884]: query[A] captive-cidr.origin-apple.com.akadns.net from 192.168.178.21
Feb  9 18:43:06 dnsmasq[884]: query[AAAA] captive-cidr.origin-apple.com.akadns.net from 192.168.178.21
Feb  9 18:43:21 dnsmasq[884]: query[A] time-macos.apple.com from 192.168.178.21

现在我有一个命令:

代码语言:javascript
运行
复制
sudo tail -F /var/log/pihole.log  | grep --line-buffered "query" | sed -E 's/(\query).*(\from)/\1 \2/'

因为我想把元素去掉,这样它就会变成:

代码语言:javascript
运行
复制
18:42 captive.g.aaplimg.com
18:42 sb.scorecardresearch.com
18:42 captive.g.aaplimg.com
18:43 captive-cidr.origin.apple.com 

以此类推。

我哪里错了?

EN

回答 1

Stack Overflow用户

发布于 2020-02-10 16:07:04

下面的命令从您描述为grep输出的6行代码中提取所需的信息(小时、分钟以及queryfrom之间的内容,就像您在最后4行代码中描述的那样)。

代码语言:javascript
运行
复制
sed -E 's/.*([0-9]{2}:[0-9]{2}):.*query\[[^]]*\] (.*) from .*/\1 \2/'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60140138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档