我想從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
很難提供建議,而無需看到一些示例輸入文件。 –