我有一个包含500个成员的电话号码的CSV列表。我尝试了diff工具,但似乎没有人可以找到重复的东西。查找重复(正则表达式)
我可以使用正则表达式根据成员的电话号码查找重复行吗?
我在Mac上使用Textmate。
非常感谢
我有一个包含500个成员的电话号码的CSV列表。我尝试了diff工具,但似乎没有人可以找到重复的东西。查找重复(正则表达式)
我可以使用正则表达式根据成员的电话号码查找重复行吗?
我在Mac上使用Textmate。
非常感谢
重复搜索什么?整条线路或只是相同的电话号码?
如果是整条生产线,那就试试这个:
sort phonelist.txt | uniq -c | sort -n
,你会在底部看到,发生一次以上的所有行。
如果它仅仅是在一些列的电话号码,然后使用此:
awk -F ';' '{print $4}' phonelist.txt | uniq -c | sort -n
更换“4”与电话号码和列数“;”用你在文件中使用的真正分隔符。
或者从这个文件中给我们几行例子。
EDIT:
如果数据格式为:name,mobile,phone,uniqueid,group
,然后使用以下:
awk -F ',' '{print $3}' phonelist.txt | uniq -c | sort -n
在命令行
。
您通常可以解析此文件,并检查哪些行重复。我认为RAGEX
是这个问题最糟糕的解决方案。
我可以想到更糟糕的解决方案 – 2011-09-17 23:23:05
你在用什么语言?在.NET中,您可以毫不费力地将CSV文件加载到DataTable中,并查找/删除重复的行。之后,将您的DataTable写回另一个CSV文件。
哎呀,你可以加载这个文件到Excel中并按字段排序并手动查找重复项。 500并不是那么多。
使用PERL。
负载的CSV文件到一个数组中,并匹配您要检查(电话号码)的副本,然后将值存储到另一个数组,然后检查数组中重复列,使用:
my %seen;
my @unique = grep !$seen{$_}++, @array2;
之后,您只需将唯一数组(电话号码)加载到for循环中,然后将数组#1(行)加载到for循环中。比较唯一阵列中的电话号码,如果匹配,则将该行输出到另一个csv文件中。
你可以使用正则表达式吗?大概。你应该使用正则表达式吗?一定不行。 – NullUserException 2010-09-27 13:55:45