我想从 csv 文件中提取所有电子邮件地址。如何执行此操作。顺便说一句,电子邮件的位置不是按列或按行组织的。
其实没有正规的格式,但我举个例子
"bla bla bla bla Website: www.mysite.com ; Email: information@email.com";usa;
所以问题是如何从这句话中提取电子邮件地址?
谢谢大家;我找到了我的问题的正确答案,它是:
grep -E -o "\b[a-zA-Z0-9.-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" file.csv | sort -u > email_list
如果需要,请调整正则表达式(\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
从充满 csv 文件的文件夹中提取电子邮件地址;只使用 perl
cat *.csv > all.csv
perl -wne'while(/[\w\.\-]+@[\w\.\-]+\w+/g){print "$&\n"}' all.csv | sort -u > output.txt