Linux:基于特定字段的重复数据删除

问题描述 投票:-2回答:1

我有一个CSV文件,我需要重复输入FIRST字段匹配的条目,即使其他字段不匹配。此外,剩下的行应该是具有最高日期的其他字段之一。

这就是我的数据:

"47917244","000","OTC","20180718","7","2018","20180719","47917244","20180719"
"47917244","000","OTC","20180718","7","2018","20180731","47917244","20180731"
"47917244","000","OTC","20180718","7","2018","20180830","47917244","20180830"

所有3行在第一个字段中具有相同的值。第9个字段是一个日期字段,我希望以这样的方式对其进行重复数据删除,即保留具有最高日期值的第三行,但删除其他两行。

linux sorting uniq
1个回答
0
投票

在检查了另一个stackoverflow帖子(Is there a way to 'uniq' by column?)后,我通过混合使用sort和awk来实现它:

sort -t, -u -k1,1 -k9,9 <file> |
    awk -F',' '{ x[$1]=$0 } END { for (i in x) print x[i] }'
© www.soinside.com 2019 - 2024. All rights reserved.