查找并删除CSV文件中的重复项

BeB*_*eBo 1 python csv awk duplicates

我有一个包含三列的大型CSV文件(1.8 GB)。每行包含两个字符串和一个数值。问题是它们重复但已交换。例:

Col1,Col2,Col3
ABC,DEF,123
ABC,EFG,454
DEF,ABC,123
Run Code Online (Sandbox Code Playgroud)

所需的输出如下所示:

Col1,Col2,Col3
ABC,DEF,123
ABC,EFG,454
Run Code Online (Sandbox Code Playgroud)

因为第三行包含与第一行相同的信息。

编辑

数据基本上看起来像这样(前两列为字符串,第三行为4000万行,为数值):

块引用

Jam*_*own 5

你能处理awk吗?

$ awk -F, '++seen[$3]==1' file
Run Code Online (Sandbox Code Playgroud)

输出:

COL1,Col2,Col3
ABC,DEF,123
ABC,EFG,454
Run Code Online (Sandbox Code Playgroud)

解释:

$ awk -F, '      # set comma as field delimiter
++seen[$3]==1    # count instances of the third field to hash, printing only first
' file
Run Code Online (Sandbox Code Playgroud)

更新

$ awk -F, '++seen[($1<$2?$1 FS $2:$2 FS $1)]==1' file
Run Code Online (Sandbox Code Playgroud)

输出:

COL1,Col2,Col3
ABC,DEF,123
ABC,EFG,454
Run Code Online (Sandbox Code Playgroud)

它对第一个字段和第二个字段的每个组合进行哈希处理,以便"ABC,DEF"=="DEF,ABC"仅对第一个字段进行打印并计数。($1<$2?$1 FS $2:$2 FS $1)如果第一个字段小于第二个字段,则哈希1st,2nd其他hash2nd,1st

  • ++++ [key] == 1`更常见/惯用为!seen [key] ++`。 (2认同)