2013-09-23 63 views
0

所有電子郵件都保存在文本文件中,但沒有任何空格和每行很多。 尋找一種方式與Linux排序他們與電子郵件的正則表達式模式。在電子郵件地址後添加新行

our_company_emails.txt:

[email protected]@[email protected]@sampleemail.net 

所需的輸出:

[email protected] 
    [email protected] 
    [email protected] 
    [email protected] 
+0

這是不是真的有幫助。 – ole

+0

[我如何問一個好問題?](http://stackoverflow.com/help/how-to-ask) – devnull

+1

向下投票也不能解決問題。 – ole

回答

4

我不知道如果你不知何故文本文件實際上是用空字符(0x00)來界定。

基本上,你可以這樣做:

grep -oE '[^@][email protected][^@]+\.(com|net|biz|info)' our_company_emails.txt | sort 

你可以將它添加更多的頂級域名。

如果文本文件與空字符分隔,你可以這樣做,而不是:

xargs -0 printf "%s\n" < our_company_emails.txt | sort 
+0

我喜歡這一個更多... – bua

+4

似乎很簡單做'tr \ 000 \\ n',只需用換行符替換空值。 YMMV –

+1

這似乎最好的工作,除了必須明確指定所有(子)域..感謝bro – ole

2

最簡單的,你可以做的是:

sed -r 's/([[:alnum:]]@[[:alnum:]]+\.)(com|info|biz|net)/\1\2\n/g' our_company_emails.txt 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

添加新域名,編輯在必要時...

編輯:

  • 校正由愛德·莫頓的建議
  • 佔地面積也用戶名包含點(。)和域後綴的情況
+0

至少失去了UUOC,並錨定您的RE,所以「[email protected]」不會成爲「bob @ com」在一條線上並且「cast.net」在另一條線上。 –

0

這可能爲你工作(GNU SED):

sed 's/test1/\n&/2g' file 
相關問題