You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取文本文件中位于特定分隔符间的邮箱地址并写入新文件

如何提取文本文件中位于特定分隔符间的邮箱地址并写入新文件

嘿,这个需求太常见了,用Linux/Unix下的经典文本处理工具就能快速搞定,我给你分享几个实用的方案:

方法1:用grep(最简洁的方式之一)

grep的正则匹配能力刚好适配这个场景,尤其是-o参数能只输出匹配到的内容,完美提取特定片段:

grep -oP '(?<=\=\>).*?(?=\<\=)' input.txt > output.txt

给你拆解下各部分的作用:

  • -o:只输出文本中匹配到的部分,而不是整行内容
  • -P:启用Perl兼容的正则表达式(PCRE),支持正向预查语法
  • (?<=\=\>):正向预查,确保匹配内容紧跟在=>之后
  • .*?:非贪婪匹配任意字符,避免把多行的内容误匹配成一段
  • (?=\<\=):正向预查,确保匹配内容在<=之前
  • input.txt是你的源文件名,> output.txt会把提取到的邮箱直接写入新文件

方法2:用sed(流编辑器处理)

sed擅长文本替换,我们可以通过替换规则剔除不需要的内容,只保留邮箱:

sed -n 's/.*=>\([^<]*\)<=.*/\1/p' input.txt > output.txt

参数和规则说明:

  • -n:默认不输出任何行,只打印我们指定的内容
  • s/.*=>\([^<]*\)<=.*/\1/:替换规则,把整行内容替换成目标邮箱
    • .*=>:匹配行首到=>的所有冗余内容
    • \([^<]*\):捕获<=之前的所有非<字符(邮箱里不会包含<,这个写法很安全)
    • <.*:匹配<=到行尾的所有冗余内容
    • \1:引用刚才捕获到的邮箱内容
  • p:打印替换后的有效结果

方法3:用awk(灵活的文本分析工具)

awk可以通过自定义分隔符拆分文本,轻松定位到目标片段:

awk -F'[=><=]' '$3 != "" {print $3}' input.txt > output.txt

解释下逻辑:

  • -F'[=><=]':把=、>、<设为分隔符,这样每行文本会被拆分成多个字段
  • 符合格式的行里,邮箱刚好是第3个字段(比如323168fdsafdafsdfj=>email1@example.de<=...会被拆成323168fdsafdafsdfj、空字段、email1@example.de、空字段、askdjfköj4243j40278012)
  • $3 != "":过滤掉没有邮箱的空行,只打印有效的邮箱内容

如果你的awk是GNU版本,还可以用正则匹配的方式:

awk 'match($0, /=>([^<]*)<=/, result) {print result[1]}' input.txt > output.txt

这里match函数会把捕获到的邮箱存入result数组,result[1]就是我们要提取的内容。


备注:内容来源于stack exchange,提问作者D-T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:48:08