所有电子邮件都保存在文本文件中,但没有任何空格和每行多个。 寻找一种使用Linux的方法,使用电子邮件的正则表达式对它们进行排序。
our_company_emails.txt:
test1@sampleemail.comtest1@sampleemail.biztest1@sampleemail.infotest1@sampleemail.net
期望的输出:
test1@sampleemail.com
test1@sampleemail.biz
test1@sampleemail.info
test1@sampleemail.net
答案 0 :(得分:4)
我想知道你的文本文件是否实际上用空字符(0x00)分隔。
基本上你可以这样做:
grep -oE '[^@]+@[^@]+\.(com|net|biz|info)' our_company_emails.txt | sort
你可以添加更多的tld。
如果文本文件以空字符分隔,则可以改为:
xargs -0 printf "%s\n" < our_company_emails.txt | sort
答案 1 :(得分:2)
最简单的你可以做到:
sed -r 's/([[:alnum:]]@[[:alnum:]]+\.)(com|info|biz|net)/\1\2\n/g' our_company_emails.txt
test1.asdf@sampleemail.com
test1.net@sampleemail.biz
test1@sampleemail.info
test1@sampleemail.net
bob@comcast.net
添加新域名,必要时进行修改......
编辑:
答案 2 :(得分:0)
试试这一行:
sed -r 's/(.)(test1@)/\1\n\2/g' file
输出:
test1@sampleemail.com
test1@sampleemail.biz
test1@sampleemail.info
test1@sampleemail.net
group1 (.)
,仅用于在第一个电子邮件地址上跳过替换。
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed 's/test1/\n&/2g' file