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

Regex 在电子邮件地址后添加换行符,regex,linux,bash,sed,awk,Regex,Linux,Bash,Sed,Awk,所有电子邮件都保存在一个文本文件中,但没有任何空格,每行有许多。 正在寻找一种使用Linux的方法,使用电子邮件的正则表达式模式对它们进行排序 我们的_company_emails.txt: test1@sampleemail.comtest1@sampleemail.biztest1@sampleemail.infotest1@sampleemail.net 期望输出: test1@sampleemail.com test1@sampleemail.biz t

所有电子邮件都保存在一个文本文件中,但没有任何空格,每行有许多。 正在寻找一种使用Linux的方法,使用电子邮件的正则表达式模式对它们进行排序

我们的_company_emails.txt:

    test1@sampleemail.comtest1@sampleemail.biztest1@sampleemail.infotest1@sampleemail.net
期望输出:

    test1@sampleemail.com
    test1@sampleemail.biz
    test1@sampleemail.info
    test1@sampleemail.net

我想知道您的文本文件是否以空字符(0x00)分隔

基本上你可以这样做:

grep -oE '[^@]+@[^@]+\.(com|net|biz|info)' our_company_emails.txt | sort
您可以添加更多TLD

如果文本文件用空字符分隔,则可以改为:

xargs -0 printf "%s\n" < our_company_emails.txt | sort
xargs-0 printf“%s\n”
我想知道您的文本文件是否以空字符(0x00)分隔

基本上你可以这样做:

grep -oE '[^@]+@[^@]+\.(com|net|biz|info)' our_company_emails.txt | sort
您可以添加更多TLD

如果文本文件用空字符分隔,则可以改为:

xargs -0 printf "%s\n" < our_company_emails.txt | sort
xargs-0 printf“%s\n”
试试这句话:

sed -r 's/(.)(test1@)/\1\n\2/g' file
输出:

test1@sampleemail.com
test1@sampleemail.biz
test1@sampleemail.info
test1@sampleemail.net
group1
()
,只用于跳过在第一个电子邮件地址上发生的替换。

请尝试这一行:

sed -r 's/(.)(test1@)/\1\n\2/g' file
输出:

test1@sampleemail.com
test1@sampleemail.biz
test1@sampleemail.info
test1@sampleemail.net

group1
()
,只用于跳过在第一个电子邮件地址上发生的替换。

最简单的方法是:

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
添加新域,必要时进行编辑

编辑:

  • 按照Ed Morton的建议进行更正
  • 还包括用户名包含点(.)和域后缀的情况

    • 最简单的方法是:

      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
      
      添加新域,必要时进行编辑

      编辑:

      • 按照Ed Morton的建议进行更正
      • 还包括用户名包含点(.)和域后缀的情况
      这可能适合您(GNU-sed):

      这可能适用于您(GNU-sed):


      这不是很有帮助。否决投票也不能解决问题。如果你有
      foo@bar.com
      foo@bar.co
      。若要查看是否存在任何无法打印的分隔符:
      od-c我们公司的电子邮件.txt
      这并没有什么帮助。向下投票也不能解决问题。如果您有
      foo@bar.com
      foo@bar.co
      。若要查看是否有任何无法打印的分隔符:
      od-c我们公司的电子邮件.txt
      我更喜欢这一个…似乎要简单得多,只需将空字符替换为换行符即可。YMMV这似乎是最好的,除了必须明确指定所有(子)域。。谢谢兄弟,我更喜欢这个…看起来做起来要简单得多,
      tr\000\\n
      只需用换行符替换空值即可。YMMV这似乎是最好的,除了必须明确指定所有(子)域。。谢谢兄弟至少失去UOOC并锚定你的RE-so“bob@comcast.net“不会变成”bob@com“在一行上,在另一行上使用”cast.net“。至少失去UUOC并锚定你的RE-so”bob@comcast.net“不会变成”bob@com“在一行上”和“cast.net”在另一行上。