アプリ版:「スタンプのみでお礼する」機能のリリースについて

今、重複を含む長大なメールアドレスのリストを扱っています。(100万件以上あります)
一行に一アドレスで約100万行あるのですが、ここから重複している分を抽出したリストを作りたいと思っています。

Excelで開けないファイルですので、秀丸エディタのマクロで解決できないかな、と思っています。
自分でマクロを書いたことはないので、この用途に使えるマクロなど紹介していただけると助かります。

宜しくお願い致します。

A 回答 (3件)

100万行ではやっていませんが、以下のようなスクリプトを書いて実行すると、以下の結果が得られます。


スクリプト(dup.plの名前のファイルに格納します)
--------------------
# 使用方法
#
# perl dup.pl メールアドレスリストファイル
# 機能:重複しているメールアドレスを表示する
# 結果は画面に出力される。
#メールアドレスをテーブルに登録(件数もカウントする)
while(<>){
chomp $_;
$addr{$_} += 1;
}
#1つのメールアドレスが2件以上のものを出力する。
while( ($key,$val) = each(%addr)){
if ($val >= 2){
printf("重複メール=<%s> %d件\n",$key,$val);
}
}

--------------------
メールアドレスのテキストをmail.txtとします。
内容は、以下の通りです。
--------------------------
xxxx1@yyy.co.jp
xxxx2@yyy.co.jp
xxxx3@yyy.co.jp
xxxx4@yyy.co.jp
xxxx5@yyy.co.jp
xxxx@yyy.co.jp
xxxx5@yyy.co.jp
xxxx3@yyy.co.jp
xxxx4@yyy.co.jp
xxxx5@yyy.co.jp
xxxx6@yyy.co.jp
----------------------
DOSプロンプトで
perl dup.pl mail.txt
とすると、
以下の結果が得られます。
------------------------------
重複メール=<xxxx5@yyy.co.jp> 3件
重複メール=<xxxx3@yyy.co.jp> 2件
重複メール=<xxxx4@yyy.co.jp> 2件
---------------------------------
この結果をファイルへ出力する場合は、
perl dup.pl mail.txt > out.txt
とします。out.txtに結果が出力されます。
(perlをインストールしてperl.exeにパスを通す必要があります)
    • good
    • 0
この回答へのお礼

私もまだ大きなファイルで試していませんが、数万件のファイルでしたら問題なく処理が可能でした。大変参考になりました。
有難うございます!

お礼日時:2008/10/10 20:35

秀丸で100万行読み込ませるのは、できたとしても、そこから更に重複行の削除は、重いような気がします。


私が、回答できる保証はありませんが、
参考までに、1行のデータは、どのようになっていますか?
また、各行には、かならず、メールアドレスがついてますか。
メールアドレスがついてない行もありますか。
できれば、何行かのサンプルを提示して下さい。(アドレスは、個人情報が漏れないように伏せ字にして下さい。)
もし、perlをインストールしてもよいなら、perlで処理するのが、最短の解決方法のような気がします。(参考URLのperlをインストールします)

参考URL:http://www.forest.impress.co.jp/lib/stdy/program …

この回答への補足

ご回答有難うございます。

下記の通り補足させていただきます。
リストの形式は、
「一行に一つのメールアドレスのみ」
という簡単なテキストデータです。
他のデータが入った行やブランク行はありません。

perlのインストールも検討してみます。

補足日時:2008/10/10 12:10
    • good
    • 0

100万の単位であればSQLの出番ではないでしょうか?

    • good
    • 0
この回答へのお礼

やはり難しいでしょうか…
ご回答有難うございました。

お礼日時:2008/10/10 10:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!