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



>我有一个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 个字段是日期字段,我想以保留具有最高日期值的第三行的方式对其进行重复数据删除,但删除其他两行。

在检查了另一个堆栈溢出帖子(有没有办法按列"uniq"?(之后,我通过使用排序和 awk 的混合来让它工作:

sort -t, -u -k1,1 -k9,9 <file> |
    awk -F',' '{ x[$1]=$0 } END { for (i in x) print x[i] }'