我在搜索时找到了这个答案(Find duplicate lines in a file and count how many time each line was duplicated?),它解决了重复行的问题,但我有一个特殊的问题。
我需要找到具有相同行开头的行的重复。
例如:
2501,3,0,1,0,1457695800
2501,3,0,1,0,1457789340
2502,3,0,0,0,1457695800
2502,3,0,0,0,1457789340
2503,3,0,0,0,1457789340
2504,3,0,0,0,1457789340
2505,3,0,0,0,1457789340
在上面的CSV数据中,如果时间戳不存在,2501
和2502
将会重复。
是否有办法通过仅考虑前5个字段(即不包括时间戳)来将它们视为重复项?
答案 0 :(得分:0)
我最终通过一起执行一系列命令来找到答案:
cat my_file.csv | perl -p -i -n -e 's/^(.*),[0-9]{10}.+?$/$1/' | sort | uniq -d
基本上,步骤是:
cat
获取文件的内容sort
,它将对内容进行排序uniq
与-d
切换查找重复行如果您愿意,也可以将结果输出到文件:
cat my_file.csv | perl -p -i -n -e 's/^(.*),[0-9]{10}.+?$/$1/' | sort | uniq -d > line_duplicates.txt
希望这有帮助。