0

我想从 csv 文件中提取所有电子邮件地址。如何执行此操作。顺便说一句,电子邮件的位置不是按列或按行组织的。

其实没有正规的格式,但我举个例子

 "bla bla bla bla Website: www.mysite.com ; Email: information@email.com";usa; 

所以问题是如何从这句话中提取电子邮件地址?

4

3 回答 3

9

谢谢大家;我找到了我的问题的正确答案,它是:

grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" file.csv | sort -u > email_list 
于 2013-06-05T15:41:02.387 回答
3

如果需要,请调整正则表达式(\S+@\S+可能太简单了):

grep -o -P '\S+@\S+' input.csv

来自man grep

-o, --only-matching
      Print only the matched (non-empty) parts of a matching line, 
      with each such part on a separate output line.
-P, --perl-regexp
      Interpret PATTERN as a Perl regular expression (PCRE, see below).  
      This is highly experimental and grep -P may warn of unimplemented features.

排序和跳过重复项:

grep -o -P '\S+@\S+' input.csv | sort -u
于 2013-06-05T14:50:24.110 回答
0

从充满 csv 文件的文件夹中提取电子邮件地址;只使用 perl

cat *.csv > all.csv 
perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' all.csv | sort -u > output.txt 
于 2013-11-25T08:30:43.690 回答