代码之家  ›  专栏  ›  技术社区  ›  eozzy

查找重复项(regex)

  •  2
  • eozzy  · 技术社区  · 14 年前

    我有一个包含500名会员及其电话号码的csv列表。我试过不同的工具,但似乎没有一个能找到重复的。

    我可以用regex按成员的电话号码查找重复的行吗?

    我在Mac上使用textmate。

    多谢

    5 回复  |  直到 14 年前
        1
  •  4
  •   eumiro    14 年前

    你在找什么副本?整条线路还是同一个电话号码?

    如果是整条线,请尝试以下操作:

    sort phonelist.txt | uniq -c | sort -n
    

    你会在底部看到所有的线条,不止一次出现。

    如果只是某列中的电话号码,请使用:

    awk -F ';' '{print $4}' phonelist.txt | uniq -c | sort -n
    

    将“4”替换为列的电话号码,将“;”替换为文件中使用的实际分隔符。

    或者给我们一些来自这个文件的示例行。

    编辑 :

    如果数据格式为: name,mobile,phone,uniqueid,group ,然后使用以下内容:

    awk -F ',' '{print $3}' phonelist.txt | uniq -c | sort -n
    

    在命令行中。

        2
  •  2
  •   Robusto    14 年前

    对。一种方法是,看 here . 但你可能不想这样做。

        3
  •  0
  •   Svisstack    14 年前

    您通常可以解析这个文件,并检查哪些行是重复的。我想 RAGEX 是解决这个问题的最坏办法。

        4
  •  0
  •   Ryan Rodemoyer    14 年前

    你用什么语言?在.NET中,您可以轻松地将csv文件加载到数据表中并查找/删除重复的行。然后,将数据表写回另一个csv文件。

    检查,您可以将此文件加载到Excel并按字段排序,然后手动查找重复项。500人不多。

        5
  •  0
  •   Ruel    14 年前

    使用Perl。

    将csv文件加载到数组中,并匹配要检查的列(电话号码)是否重复,然后将值存储到另一个数组中,然后使用以下方法检查该数组中的重复项:

    my %seen;
    my @unique = grep !$seen{$_}++, @array2;
    

    之后,您需要做的就是将唯一的数组(电话号码)加载到for循环中,并在其中将数组1(线路)加载到for循环中。比较唯一数组中的电话号码,如果匹配,则将该行输出到另一个csv文件中。