我有很大的 3 列文件(约 10,000 行),当该行第三列的内容出现在另一行的第三列中时,我想删除行。文件的大小使排序有点麻烦,我不能使用类似下面的代码,因为整行不相同;只是第 3 列的内容。
awk '!seen[$0]++' filename
Run Code Online (Sandbox Code Playgroud) 我搜索了这个任务,发现了以下较旧的问题:
但我无法使用,awk
因为我的数据是一个复杂的 CSV 文件,带有多个嵌套双引号。
假设我想对以下内容进行重复数据删除(简化情况):
Ref,xxx,zzz
ref1,"foo, bar, base",qux
ref1,"foo, bar, base",bar
ref2,aaa,bbb
Run Code Online (Sandbox Code Playgroud)
在输出中我需要它如下:
Ref,xxx,zzz
ref1,"foo, bar, base",qux
ref2,aaa,bbb
Run Code Online (Sandbox Code Playgroud)
没有awk
解决方案,只能使用任何 CSV 解析器。
我尝试了以下方法:
mlr --csv uniq -a -g Ref file.csv
Run Code Online (Sandbox Code Playgroud)
但这是一个错误。