我有一個包含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