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

如何用Bash解析并修改CSV文件:格式化姓名与生成指定邮箱

解决CSV文件的姓名格式化与邮箱生成问题

原始CSV示例

id,location_id,name,title,email,directorate 
1,1, Amy lee,Singer,, 
2,2,brad Pitt,Actor,,Production 
3,5,Steven Spielberg,Producer,spielberg@my.com,Production

需要完成的操作

  • 将姓名的每个单词首字母改为大写(例如Amy Lee、Brad Pitt)
  • 按规则生成邮箱:名字首字母(小写)+姓氏(小写)+location_id值+@google.com
  • 保留原有CSV结构,将结果保存为file.csv

可行解决方案(使用awk脚本)

直接用awk一次性完成所有处理,避免循环结合sed/awk导致的混乱:

awk 'BEGIN {FS=OFS=","}
NR==1 {print; next}
{
    # 处理姓名:去除前后空格后,每个单词首字母大写
    name = $3
    gsub(/^[[:space:]]+|[[:space:]]+$/, "", name)
    split(name, parts, /[[:space:]]+/)
    formatted_name = ""
    for (i in parts) {
        part = parts[i]
        formatted_part = toupper(substr(part,1,1)) tolower(substr(part,2))
        formatted_name = formatted_name (formatted_name == "" ? "" : " ") formatted_part
    }
    $3 = " " formatted_name  # 保留原始姓名字段的前导空格

    # 生成目标邮箱格式
    first_initial = tolower(substr(parts[1],1,1))
    last_name = tolower(parts[2])
    $5 = first_initial last_name $2 "@google.com"

    print
}' input.csv > file.csv

脚本说明

  • BEGIN {FS=OFS=","}:设置输入和输出的分隔符为逗号,确保CSV结构不被破坏
  • NR==1 {print; next}:表头行直接输出,不做任何修改
  • 姓名处理:先清除姓名字段的前后空格,再分割为名字和姓氏,逐个将单词首字母大写、其余字母小写,最后还原原始的前导空格
  • 邮箱生成:提取名字首字母转小写、姓氏全小写,拼接location_id和域名,替换原email字段
  • 最后将处理后的整行输出,重定向到新文件file.csv

处理后结果

id,location_id,name,title,email,directorate 
1,1, Amy Lee,Singer,alee1@google.com, 
2,2,Brad Pitt,Actor,bpitt2@google.com,Production 
3,5,Steven Spielberg,Producer,sspielberg5@google.com,Production

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 14:30:59