我正在使用包含 7 列的多行文本文件 (.csv)。
每行包含“应该”是一个唯一的 id 还有一些日期列,其中一个是“最后修改”日期。
我发现应该是“唯一”的 id 实际上有时会重复,这是我需要通过删除除一个之外的所有来解决的问题。
我在下面有一个使用 gawk 的示例,但是有没有办法使用 gawk、awk 或 grep 等来删除任何重复的行,但“最近”修改的行除外?所以,有一些关于什么去和去的逻辑。
例如,这个 csv 提取有两行。除了一个之外,每个字段都是相同的。身份证号码“相同”意味着它是我的目的的“重复”。
但这两条线并不完全相同。
csv 文件最后(第 7 个)字段中的日期使一个条目比另一个条目更旧。
ID12345,Here is some text,ABCDEFG,7,9,2022-08-18 20:15:00,2022-08-26 17:32:00
ID12345,Here is some text,ABCDEFG,7,9,2022-08-18 20:15:00,2022-09-11 22:15:00
是否可以对文件进行 gawk、cat、grep、cut、awk 等操作,并且:
a) 识别具有重复 ID 的任何事物。b) 仅保留最后一个字段中具有“最新”日期的重复项。
理想情况下,我需要保留第一行,因为它具有正在输入数据库的 csv 的标题。
这就是为什么这几乎可以正常工作的原因:
gawk -i inplace '!a[$0]++' *.csv
它实际上似乎删除了保留一行的重复项,但是它没有逻辑来根据最终字段中最旧的日期值来决定要保留什么。
你能帮忙吗...