我有一个巨大的csv文件demo.csv(大小为GB),其中包含3列,如下所示:
$ cat demo.csv
call_start_time,called_no,calling_no
43284.85326,1111111111,2222222222
43284.83192,3333333333,1111111111
43284.83205,2222222222,1111111111
43284.81304,4444444444,3333333333
我试图在第2列或第3列(无论顺序如何)中找到具有重复值的行。例如,这应该是上面显示的数据的输出:
call_start_time,called_no,calling_no
43284.85326,1111111111,2222222222
43284.83205,2222222222,1111111111
我尝试使用csvkit:
csvsql --query "select called_no, calling_no, call_start_time, count(1) from file123 group by called_no,calling_no having count(1)>1" file123.csv > new.csv
答案 0 :(得分:1)
使用awk,您可以构建一个关联数组a
,其中记录作为值,键k
的构建是将字段$ 2和$ 3排序并用管道连接。
awk -F, 'NR==1; { k=($3<$2) ? $3"|"$2 : $2"|"$3; if (a[k]) { if (a[k]!="#") {print a[k];a[k]="#"} print} else a[k]=$0}' file
如果当前记录具有已存在的键,则将打印存储的记录(仅在第一次时),并且也会打印当前记录。
答案 1 :(得分:0)
Xamarin.Firebase