加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – awk过滤日志文件

发布时间:2020-12-14 00:06:13 所属栏目:Linux 来源:网络整理
导读:我使用以下好的awk命令来过滤重复的行 例: cat LogFile | awk '!seen[$0]++' 问题是,在某些情况下,我们需要过滤重复的行,尽管有些字段不同,但它们并不那么重要 例如 日志文件: [INFO],[02/Jun/2014-19:30:45],EXE,ds1a,INHT VERION,1.4.4.3-08 [INFO],[02/
我使用以下好的awk命令来过滤重复的行

例:

cat LogFile | awk '!seen[$0]++'

问题是,在某些情况下,我们需要过滤重复的行,尽管有些字段不同,但它们并不那么重要

例如

日志文件:

[INFO],[02/Jun/2014-19:30:45],EXE,ds1a,INHT VERION,1.4.4.3-08
 [INFO],[02/Jun/2014-19:31:25],[02/Jun/2014-19:32:40],1.4.4.3-08

请看一下这个文件 – LogFile

我需要从第三个分隔符“,”中删除重复的行,直到该行的结尾,

而且无论在第三个分隔符之前是什么

所以最后我应该得到这个过滤文件:(应该总是得到列表中的第一个)

[INFO],1.4.4.3-08

所以请帮我完成我的任务

如何从第三个分隔符“,”过滤LofFile,并忽略字段:[INFO],[………..],

备注 – 植入也可以使用perl one liner line

解决方法

使用GNU awk for gensub():

$awk '!seen[gensub(/([^,]*,){3}/,"","")]++' file
[INFO],1.4.4.3-08

任何支持RE间隔的awk(大多数现代awks):

$awk '{key=$0; sub(/([^,key)} !seen[key]++' file
[INFO],1.4.4.3-08

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读