【发布时间】:2021-01-13 12:26:24
【问题描述】:
我有一个逗号分隔的文本文件(为了便于阅读,下面的示例中没有逗号)包含几列。
id date
xyz_1567.n28 2017-08-09T18:36:38.000000Z
abc_2791.b87 2015-04-07T12:04:06.000000Z
xyz_1567.n28 2019-10-09T10:34:38.000000Z
每当“id”列有重复时,我们需要比较重复行的“日期”列,并删除日期较早的行。在上面的示例中,第一行和第三行共享相同的 'id' 值。第三行的日期晚于第一行的日期,因此将保留第三行。输出:
id date
abc_2791.b87 2015-04-07T12:04:06.000000Z
xyz_1567.n28 2019-10-09T10:34:38.000000Z
使用 awk 或 sort 可以很容易地找到重复项,比较日期也不难。困难的部分是将两者结合起来——至少对我来说是这样。
【问题讨论】:
-
Finding duplicates could be achieved fairly easily with awk or sort, comparing dates isnt hard either那么你能提供两者的模板代码吗?组合很容易awk '{if (length(arr[$1])) { if (greater_date(arr[$1], $2)) arr[$1]=$2; } else arr[$1]=$2 } END { for i in arr ....})。基本上保存当前值。检查以前的值是否存在,如果遇到新值,则更新是否更好的日期。