我使用了下面的 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],EXE,ds1a,INHT VERION , 1.4.4.3-08
[INFO],[02/Jun/2014-19:32:40],EXE,ds1a,INHT VERION , 1.4.4.3-08
请查看此文件 - LogFile
我需要删除第三个分隔符“,”中的重复行,直到行尾,
不管第三个分隔符之前是什么
所以最后我应该得到这个过滤后的文件:(应该总是得到列表中的第一个文件)
[INFO],[02/Jun/2014-19:30:45],EXE,ds1a,INHT VERION , 1.4.4.3-08
请帮我完成任务
如何从第三个分隔符","过滤LofFile,忽略字段:[INFO],[......],EXE ,
备注-用perl一行也可以植入
最佳答案
对于 gensub() 使用 GNU awk:
$ awk '!seen[gensub(/([^,]*,){3}/,"","")]++' file
[INFO],[02/Jun/2014-19:30:45],EXE,ds1a,INHT VERION , 1.4.4.3-08
使用任何支持 RE 间隔的 awk(大多数现代 awk):
$ awk '{key=$0; sub(/([^,]*,){3}/,"",key)} !seen[key]++' file
[INFO],[02/Jun/2014-19:30:45],EXE,ds1a,INHT VERION , 1.4.4.3-08
关于linux - awk + 过滤日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000436/