gpt4 book ai didi

linux - 删除重复的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:46:56 24 4
gpt4 key购买 nike

我需要一些帮助来转换损坏的日志,我从我的管理员那里收到(不幸的是他们不会修复它)。基本上,有时日志包含重复的第一列,如果另一列的值等于 null,我想将其删除。

这就是它的样子

datetime,auth_protocol,result,client,port,login
2016-07-15 09:34:52,www,PASS,111.222.333.444,5593,someAddress@domain.com
2016-07-15 09:34:52,www,PASS,111.222.333.444,NULL,someAddress@domain.com
2016-08-14 00:51:35,www,PASS,NULL,19509,someAddress@domain.com
2016-08-14 00:51:35,www,PASS,444.333.222.111,19509,someAddress@domain.com
2016-09-16 05:08:46,www,FAIL,123.456.789.222,45673,someAddress@domain.com
2016-09-16 15:35:55,www,FAIL,123.456.789.222,NULL,someAddress@domain.com
2016-09-17 17:10:01,www,FAIL,111.222.333.444,55516,someAddress@domain.com

如您所见,某些行的第一列(日期)重复。

我想做的是:

1:对于所有列,第一列是重复的,比较 4 或 5 列(IP 或端口)

2:删除第4列或第5列空值的重复行

这应该是正确的输出:

datetime,auth_protocol,result,client,port,login
2016-07-15 09:34:52,www,PASS,111.222.333.444,5593,someAddress@domain.com
2016-08-14 00:51:35,www,PASS,444.333.222.111,19509,someAddress@domain.com
2016-09-16 05:08:46,www,FAIL,123.456.789.222,45673,someAddress@domain.com
2016-09-16 15:35:55,www,FAIL,123.456.789.222,NULL,someAddress@domain.com
2016-09-17 17:10:01,www,FAIL,111.222.333.444,55516,someAddress@domain.com

我希望这听起来很清楚;d

最佳答案

你可以使用这个 awk。

遍历文件两次。
第一次算骗子。
打印不被欺骗或不包含第二个 NULL 的行。

awk -F, 'NR==FNR{a[$1]++;next}a[$1]<2||$4$5!~/NULL/' file{,}

datetime,auth_protocol,result,client,port,login
2016-07-15 09:34:52,www,PASS,111.222.333.444,5593,someAddress@domain.com
2016-08-14 00:51:35,www,PASS,444.333.222.111,19509,someAddress@domain.com
2016-09-16 05:08:46,www,FAIL,123.456.789.222,45673,someAddress@domain.com
2016-09-16 15:35:55,www,FAIL,123.456.789.222,NULL,someAddress@domain.com
2016-09-17 17:10:01,www,FAIL,111.222.333.444,55516,someAddress@domain.com

关于linux - 删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40969383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com