首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在电子邮件地址后添加换行符

在电子邮件地址后添加换行符
EN

Stack Overflow用户
提问于 2013-09-23 11:22:21
回答 4查看 119关注 0票数 0

所有的电子邮件都保存在一个文本文件中,但是没有任何空格,每行也有很多。寻找一种用Linux对电子邮件进行排序的方法。

our_company_emails.txt:

代码语言:javascript
复制
    test1@sampleemail.comtest1@sampleemail.biztest1@sampleemail.infotest1@sampleemail.net

期望产出:

代码语言:javascript
复制
    test1@sampleemail.com
    test1@sampleemail.biz
    test1@sampleemail.info
    test1@sampleemail.net
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-23 11:27:14

我想知道您的文本文件是否实际上是用空字符(0x00)分隔的。

基本上你可以这样做:

代码语言:javascript
复制
grep -oE '[^@]+@[^@]+\.(com|net|biz|info)' our_company_emails.txt | sort

你可以增加更多的tlds。

如果文本文件用空字符分隔,则可以这样做:

代码语言:javascript
复制
xargs -0 printf "%s\n" < our_company_emails.txt | sort
票数 4
EN

Stack Overflow用户

发布于 2013-09-23 11:32:24

最简单的方法是:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-09-23 11:31:18

试试这句话:

代码语言:javascript
复制
sed -r 's/(.)(test1@)/\1\n\2/g' file

产出:

代码语言:javascript
复制
test1@sampleemail.com
test1@sampleemail.biz
test1@sampleemail.info
test1@sampleemail.net

group1 (.)只是为了跳过在第一个电子邮件地址上发生的替换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18957999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档