免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6829 | 回复: 24
打印 上一主题 下一主题

[文本处理] 如何将文件中包含某关键字的行删除掉?syslog报警需求 [复制链接]

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-31 01:17 |只看该作者 |倒序浏览

现在我的工作是这样,每天主要看syslog大于10M是什么原因导致的,但是有的时候可能机器硬件故障导致一些硬件报警,比如说关键字"disk_error",需要永久忽略的怎么办呢?

  1. 例:pc1、Pc2硬盘有故障,每天messages日志30M,其中大多关键字都是包含disk_error,所以每天就会报警出来,如何在日志服务器中messages文件中包含disk_error字段删除掉,
  2. 日志目录:/log/pc1/messages和/log/pc2/messages,我该如何过滤呢?

复制代码

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-07-31 08:24 |只看该作者
为什么不修好或更换有问题的硬盘呢?

只是删除日志, 那不是掩耳盗铃 么?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2014-07-31 08:46 |只看该作者
本帖最后由 houjun19830610 于 2014-07-31 13:14 编辑

This question is not too tough to be solved.

Here are my answers.

cat /log/pc1/messages | grep -v "disk_error" >> /log/pc1/messages.new

This command can grasp all of log information except the lines containing keywords "disk_error".

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
4 [报告]
发表于 2014-07-31 08:55 |只看该作者
回复 3# houjun19830610


简化:
  1. grep -v "disk_error" /log/pc1/messages > /log/pc1/messages.new
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
5 [报告]
发表于 2014-07-31 10:25 |只看该作者
回复 4# Shell_HAT


    哈哈,其实差不多。

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
6 [报告]
发表于 2014-07-31 15:31 |只看该作者
本帖最后由 jcdiy0601 于 2014-07-31 15:31 编辑
  1. grep -v "disk_error" /log/pc1/messages > /log/pc1/messages.new
复制代码

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
7 [报告]
发表于 2014-08-01 11:03 |只看该作者
各位好,是这样的,一台日志收集服务器上面会有全网的日志。我们这边判断是否大于10M 是用du -sk 大于 10240,比如说目录下
<code>
[root@cdn ~]#ls ./8.8.8.8/
messages maillog
[root@cdn ~]#du -sk ./8.8.8.8/
15624        .
</code>
像以上的情况就会报警,假如说messages中百分之80的字段都是包含disk_error的行,如何在du -sk的时候筛选出去,如果想刚刚大神所说grep -v 重定向另个文件,这刚总目录下du时候还是会大于10m的,
用sed //d 可以实现,但是我们领导说,日志的文件不能动,所以现在我比较麻烦!
<code>如何在du -sk执行的时候,过滤掉某个字段?</code>
<code>
#!/bin/bash
date=`date --date='1 day ago' +%Y-%m-%d`
ip=`awk '{print $1}' data.txt`
log=`awk '{print $2}' data.txt`
field=`awk '{print $3}' data.txt`

while read ip log field
do
sed  -i '/'$field'/d' /root/zx/$date/$ip/$log
done <  data.txt
</code>
我之前是这么写的,变量有点乱哈,其实最主要的sed  -i '/'$field'/d' /root/zx/$date/$ip/$log我用的是这条命令,最后判断是ok了,但是源文件被我修改了,不成立。

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
8 [报告]
发表于 2014-08-01 11:03 |只看该作者
这样漂亮点。
各位好,是这样的,一台日志收集服务器上面会有全网的日志。我们这边判断是否大于10M 是用du -sk 大于 10240,比如说目录下

  1. [root@cdn ~]#ls ./8.8.8.8/
  2. messages maillog
  3. [root@cdn ~]#du -sk ./8.8.8.8/
  4. 15624        .
复制代码
像以上的情况就会报警,假如说messages中百分之80的字段都是包含disk_error的行,如何在du -sk的时候筛选出去,如果想刚刚大神所说grep -v 重定向另个文件,这刚总目录下du时候还是会大于10m的,
用sed //d 可以实现,但是我们领导说,日志的文件不能动,所以现在我比较麻烦!
  1. 如何在du -sk执行的时候,过滤掉某个字段?
复制代码

  1. #!/bin/bash
  2. date=`date --date='1 day ago' +%Y-%m-%d`
  3. ip=`awk '{print $1}' data.txt`
  4. log=`awk '{print $2}' data.txt`
  5. field=`awk '{print $3}' data.txt`

  6. while read ip log field
  7. do
  8. sed  -i '/'$field'/d' /root/zx/$date/$ip/$log
  9. done <  data.txt
复制代码
我之前是这么写的,变量有点乱哈,其实最主要的sed  -i '/'$field'/d' /root/zx/$date/$ip/$log我用的是这条命令,最后判断是ok了,但是源文件被我修改了,不成立。

论坛徽章:
1
白银圣斗士
日期:2015-11-23 10:45:24
9 [报告]
发表于 2014-08-01 11:14 |只看该作者
回复 1# djzhangxing
  1. sed ‘/disk_error/d’  message
复制代码

论坛徽章:
2
狮子座
日期:2014-08-15 00:24:232015元宵节徽章
日期:2015-03-06 15:52:30
10 [报告]
发表于 2014-08-01 11:21 |只看该作者
嗯,我也是这么想的,但是不知道怎么和du -sk 结合起来,别如说messages中我想去掉disk_error字段的,
du -sk `sed /dnsmasq-dhcp/d messages`
du命令都是对文件的判断吧,怎么判断输出呢。
回复 10# helloclei


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP