【问题标题】:Remove duplicate records from a csv file considering single column考虑到单列,从 csv 文件中删除重复记录
【发布时间】:2022-02-16 02:02:40
【问题描述】:

我有一个包含这种类型记录的文件-

,laac_repo,cntrylist,idlist,domlist,typelist
1,22DE17,BA,S6CD6728,24JA13,6A
2,12FE18,AA,S6FD7688,25DA15,7D
3,22DE17,BA,S6CD6728,24JA13,6A
4,12FE18,AA,S6FD7688,25DA15,7D

考虑到第 4 列,我想删除重复记录\"S6CD6728\"这些类型的记录并跳过第一行

\",laac_repo,cntrylist,idlist,domlist,type list\"

我努力了

awk \'{a[$4]++}!(a[$4]-1)\' filename

也试过

awk \'FNR > 1 {a[$4]++}!(a[$4]-1)\' filename

预期的输出是 -

,laac_repo,cntrylist,idlist,domlist,typelist
1,22DE17,BA,S6CD6728,24JA13,6A
2,12FE18,AA,S6FD7688,25DA15,7D

P.S 文件有超过 1000 万条记录,请建议解决方案 w.r.t。(如果任何脚本非常感谢,而不是单个命令)。

  • 请更新问题以显示(正确的)预期输出

标签: shell awk csh tcsh


【解决方案1】:

那这个呢:

awk -F, 'FNR>1 && \!seen[$4]++' filename
1,22DE17,BA,S6CD6728,24JA13,6A
2,12FE18,AA,S6FD7688,25DA15,7D
awk -F, '\!seen[$4]++' filename
,laac_repo,cntrylist,idlist,domlist,typelist
1,22DE17,BA,S6CD6728,24JA13,6A
2,12FE18,AA,S6FD7688,25DA15,7D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2015-01-03
    • 2018-05-29
    相关资源
    最近更新 更多