我有一個.txt文件,其中包含許多電子郵件,包括標題。我只是想知道如何使用perl來查明在這個文本文件中找到了多少次相同的電子郵件地址? 它會涉及正則表達式嗎?計算文本文件中電子郵件地址的出現次數
回答
這個怎麼樣腳本:
#!/usr/bin/perl
use strict;
use Data::Dumper;
my @email_list =();
my %count;
while (my $line = <>) {
foreach my $email (split /\s+/, $line) {
if ($email =~ /^[-\w.][email protected]([a-z0-9][a-z-0-9]+\.)+[a-z]{2,4}$/i) {
push(@email_list,$email);
}
}
}
print "Total Email Count: ".scalar(@email_list)."\n\n";
$count{$_}++ for @email_list;
print Dumper(\%count);
保存它作爲email.pl
這樣的文件,並確保它可執行chmod +x email.pl
。
./email.pl file.txt
它將打印發現電子郵件地址的總數量和每個電子郵件地址數。
您可能會感興趣cpan: Email::Find。您可以將您在電子郵件中查找到的地址存儲在密鑰和計數器中作爲值。你應該可以用回調來做到這一點。你能開始使用嗎?
另一個地址解析模塊 - [Regexp :: Common :: Email :: Address](http://search.cpan.org/~cwest/Regexp-Common-Email-Address-1.01/lib/Regexp/Common/Email/ Address.pm)。 –
@ChrisCharley奇妙的,甚至比我發現的更好! –
如果你想找到所有的電子郵件地址,我建議嘗試一個模塊,而不是寫自己的正則表達式。正確匹配所有電子郵件地址變得相當複雜。
#!usr/bin/perl
use strict;
use warnings;
my $count = 0;
my $email = '[email protected]';
while(<DATA>)
{
$count++ while (m/(^|\s)\K\Q$email\E(?=\s|$)/g);
}
print "Found $email $count times";
__DATA__
[email protected] [email protected]
[email protected] #not a match
[email protected] #not a match
blah blah blah [email protected] blah blah
[email protected] #not a match
注意,這需要電子郵件地址通過從任何其他內容分離:
但是,如果你只是想尋找一個給定的電子郵件地址,你可以用一個非常簡單的正則表達式實現這一目標空白。
一些注意事項: \Q...\E
是引用文字轉義。它確保電子郵件地址中的任何內容都不會被視爲特殊的正則表達式字符(如果沒有這種情況,.
將匹配任何字符而不是字面句點)。
(?=...)
是一個預讀插入。這將匹配內容而不包含在實際匹配中。這很重要,因爲單個空間可能是之前發生的一次郵件和之後另一次。爲了匹配兩者,你不希望第一場比賽「吃掉」那個空間。
- 1. 從文件中獲取IP地址並計算出現次數
- 2. 日文/中文電子郵件地址?
- 3. 電子郵件正文出現多次
- 4. 文件夾的電子郵件地址
- 5. 計算文本文件中文字的出現次數
- 6. 在文本文件中查找電子郵件地址
- 7. 計算大文本文件中特定詞的出現次數
- 8. Java:計算文本文件中字符的出現次數
- 9. 計算文本文件中字符串的出現次數
- 10. 計算txt文件中特定文本的出現次數
- 11. Perl - 如何計算和打印電子郵件地址數組中域的出現次數?
- 12. 從文本文件驗證電子郵件地址?
- 13. 使用python計算每個地址在數據文件中出現的次數
- 14. 從使用文本文件的地圖中計算出現次數
- 15. 計算Outlook文件夾中的電子郵件數量
- 16. 計算草稿文件夾中的電子郵件數量 - Outlook
- 17. 如何使用awk將電子郵件發送到文本文件中的電子郵件地址列表?
- 18. 在文本框中的電子郵件地址導致PageRequestManagerServerErrorException
- 19. 如何驗證文本區域中的電子郵件地址
- 20. 如何與普通的電子郵件地址替換所有電子郵件地址中的一組文件
- 21. 如何從Scala中的文本文件中提取電子郵件地址
- 22. 比較兩個文本文件並計算出現次數
- 23. 電子郵件地址中編碼的電子郵件地址。可能嗎?
- 24. 使用VBA從Outlook電子郵件正文中提取電子郵件地址?
- 25. 如何從文本中解析/裁剪電子郵件地址
- 26. 計算電子郵件地址的打字速度
- 27. 刮電子郵件地址
- 28. 在電子郵件地址
- 29. noreply電子郵件地址。
- 30. Rtrtr.com電子郵件地址
這取決於您的文本文件的結構。一些更多的細節會很好。 – flesk