【问题标题】:Linux CSV Remove Duplicate based on old dateLinux CSV 根据旧日期删除重复项
【发布时间】:2014-11-11 15:29:51
【问题描述】:

我们有以下 CSV 文件,其中包含

DCR_Path、翻译方向、日期和时间

data1,Send for Translation To CTM,Sep 30 2014 03:22

data2,Send for Translation To CTM,Sep 30 2014 02:21

data1,Send for Translation To CTM,Sep 30 2014 03:23

data1,Send for Translation To CTM,Sep 30 2013 03:24

data3,Send for Translation To CTM,Sep 30 2014 03:10

data2,Send for Translation To CTM,Sep 30 2014 02:22

data1,Send for Translation To CTM,Sep 30 2014 02:20

我需要获取最新的并删除其他重复项,输出应该是:

DCR_Path,Direction for Translation,Date & Time

data1,Send for Translation To CTM,Sep 30 2014 03:23

data2,Send for Translation To CTM,Sep 30 2014 02:22

data3,Send for Translation To CTM,Sep 30 2014 03:10

我尝试了下面的命令,但它没有删除基于旧日期的数据。

sort -u -t, -k1,2 filename.txt

任何帮助删除基于旧日期的重复数据并仅保留最新数据。

【问题讨论】:

    标签: linux


    【解决方案1】:

    请替换 _YOUR_FILE_...

    awk -F ',' '{ if (Z) { "(date --date=\""$3"\" +\"%s\")" | getline X ; if (Y[$1] < X) { Y[$1] = X; C[$1] = $0 } } else { Z = $0 } } END { print Z ; for (V in C) { print C[V] } }' < _YOUR_FILE_
    

    【讨论】:

    • 感谢您的回答,它适用于小文件和大文件,我得到了 awk:(FILENAME=merged-2014-11-12.csv FNR=145116) 致命:无法打开管道`(date --date="Nov 6 2014 02:53 " +"%s")' (打开的文件太多)有关解决上述问题的任何帮助......谢谢。
    • 请澄清什么是大文件:“目录中有很多文件(多少?)”或“一个大文件(一个文件有多少行?运行:wc -l
    • 认为 perl 脚本可以做你想做的事。 100%
    猜你喜欢
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多