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

如何使用sed格式化文件 适配导入电子表格的格式要求

sed格式化文件实现方案

针对你需要将项目名+关联邮箱逐行转换为项目ID | 邮箱1 | 邮箱2...格式的需求,以下是两种高效的单命令实现方案:

方案1:单行sed命令

sed -n '/@/!{x;s/\n/ | /g;p;d;};H;${x;s/\n/ | /g;p}' input.txt | sed '1d'

命令说明:

  • 匹配不带@的项目名行时,交换暂存区与模式空间内容,将暂存区中之前存储的项目+邮箱的换行分隔符替换为|后输出,再将当前新项目名存入暂存区
  • 匹配带@的邮箱行时,直接追加到暂存区存储
  • 全部行处理完成后输出最后一个项目的内容,最后删掉首行空内容即可得到目标格式

方案2:awk实现(更适合大文件场景,执行效率更高)

awk '/@/{o=o" | "$0;next} {if(o!="")print o;o=$0} END{print o}' input.txt

命令说明:

  • 匹配到邮箱行时,直接拼接至当前项目的输出变量中,用|分隔
  • 匹配到项目名行时,先输出上一个项目的拼接结果,再将当前项目名赋值给输出变量
  • 遍历结束后输出最后一个项目的内容,无需二次管道处理

效果验证

用你提供的输入文件执行上述任意命令,均可直接得到目标输出:

projectA | email1@demo.com | Email2@test.com | email3@demoA.com
TestB | testUser@demo.com | email4@test.com
ProjectC | email1@demo.com

如果存在项目名包含@的特殊场景,可将命令中的@匹配规则替换为标准邮箱正则/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/即可避免误判。

内容的提问来源于stack exchange,提问作者Kristin Brotherton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:36:02