用于在csv文件中查找重复项的脚本

9 python bash perl

我有一个40 MB的csv文件,有50​​,000条记录.它是一个巨大的产品列表.每行有近20个字段.[Item#,UPC,Desc等]

我怎么能够,

a)查找并打印重复的行.[这个文件是一个很大的附加文件,所以我需要删除文件中包含的多个标题,所以我想知道先重复的确切行.

b)根据列查找并打印重复行.[查看UPC是否分配给多个产品]

我需要在服务器上运行命令或脚本,并且我安装了Perl和Python.即使是bash脚本或命令也适合我.

我不需要保留行的顺序.等等

我试过了,

sort largefile.csv | uniq -d

得到重复,但我没有得到预期的答案.

理想情况下,我想要bash脚本或命令,但如果任何人有任何其他建议,那也会很棒.

谢谢


请参阅:在Stack Overflow上从Python中删除大文件中的重复行

mob*_*mob 8

在Perl中查找并打印重复的行:

perl -ne 'print if $SEEN{$_}++' < input-file
Run Code Online (Sandbox Code Playgroud)

在Perl中查找并打印具有重复列的行 - 假设第5列中的字段用逗号分隔:

perl -F/,/ -ane 'print if $SEEN{$F[4]}++' < input-file
Run Code Online (Sandbox Code Playgroud)


小智 8

请尝试以下方法:

# Sort before using the uniq command
sort largefile.csv | sort | uniq -d
Run Code Online (Sandbox Code Playgroud)

uniq是一个非常基本的命令,只报告彼此相邻的唯一性/重复项.


Ben*_*oit 2

您可以使用 SQLite shell 导入 csv 文件并创建索引以更快地执行 SQL 命令。