我想从csv文件中提取所有电子邮件地址。 如何做这个动作。 顺便说一句,电子邮件的位置不是按列或按行组织的。从csv文件中提取电子邮件地址
其实也没有正规的格式,但我给你举个例子
"bla bla bla bla Website: www.mysite.com ; Email: [email protected]";usa;
所以问题是如何提取这句话的电子邮件地址?
我想从csv文件中提取所有电子邮件地址。 如何做这个动作。 顺便说一句,电子邮件的位置不是按列或按行组织的。从csv文件中提取电子邮件地址
其实也没有正规的格式,但我给你举个例子
"bla bla bla bla Website: www.mysite.com ; Email: [email protected]";usa;
所以问题是如何提取这句话的电子邮件地址?
感谢所有; 我发现我的问题的正确答案,那就是:从文件夹的完全csv文件的
grep -E -o "\b[a-zA-Z0-9.-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z0-9.-]+\b" file.csv | sort -u > email_list
“sort -u”:用于避免在email_list文件中写入重复的电子邮件 “> email_list”:显示的结果将被写入email_list文本文件 –
如果需要的话(\[email protected]\S+
可能过于简单)请调整正则表达式:
grep -o -P '\[email protected]\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 '\[email protected]\S+' input.csv | sort -u
提取电子邮件adsress;只是使用Perl
cat *.csv > all.csv
perl -wne'while(/[\w\.\-][email protected][\w\.\-]+\w+/g){print "$&\n"}' all.csv | sort -u > output.txt
我不明白,csv文件往往有“列”...照顾一些样本数据? – Mithrandir
所以你想从文件中提取所有的字符串,其中的字符串是有效的电子邮件地址?请提供示例 – cmh
很难提供建议,而无需看到一些示例输入文件。 –