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

如何在EmEditor中用grep处理大型CSV文件并追加信息保留原数据

问题描述

我有一个超100万行的大型CSV文件huge_database.csv,结构如下:

name,phone,email,check_result,favourite_fruit
sam,64654664,sam@example.com,,
sam2,64654664,sam2@example.com,,
sam3,64654664,sam3@example.com,,
[...]

另外还有三个邮件列表文件:

  • good_emails.txt:
    sam@example.com
    sam3@example.com
    
  • bad_emails.txt:
    sam2@example.com
    
  • likes_banana.txt:
    sam@example.com
    sam2@example.com
    

希望通过操作得到如下格式的输出文件:

sam,64654664,sam@example.com,y,banana
sam2,64654664,sam2@example.com,n,banana
sam3,64654664,sam3@example.com,y,

需求说明:

  1. 可接受多步骤手动操作,需保证可靠性,且能处理超100万行的大型CSV文件;
  2. 仅约20%的行需修改,剩余80%数据需保持原样及原有顺序;
  3. 使用EmEditor软件而非Excel,因Excel无法处理大型CSV文件。

分步实现方案

准备工作

先把三个邮件列表里的空行清掉,避免匹配出错:

  • 打开good_emails.txt,按Ctrl+H调出替换框,切换到正则模式,查找^\s*$,替换为空,点“全部替换”后保存。
  • bad_emails.txt和likes_banana.txt也照此操作,保证每行只有一个邮箱。

步骤1:填充check_result列(y/n)

  1. 用EmEditor打开huge_database.csv,按Ctrl+Shift+F打开高级查找,选择正则表达式模式。
  2. 处理合格邮箱(good_emails):
    • 查找内容:^([^,]+,[^,]+,)(sam@example.com|sam3@example.com)(,,)$
    • 替换内容:\1\2,y,
    • 点击“全部替换”,所有在good列表里的邮箱行,check_result会自动设为y。

    要是good列表里邮箱太多,手动写正则麻烦,就用EmEditor的“从文件载入查找字符串”功能,把good_emails.txt内容转成(邮箱1|邮箱2|...)的格式再嵌入查找规则。

  3. 处理不合格邮箱(bad_emails):
    • 查找内容:^([^,]+,[^,]+,)(sam2@example.com)(,,)$
    • 替换内容:\1\2,n,
    • 点击“全部替换”,bad列表里的邮箱行check_result会自动设为n。

步骤2:填充favourite_fruit列(banana或留空)

  1. 继续在huge_database.csv中使用高级查找(正则模式)。
  2. 处理喜欢香蕉的邮箱(likes_banana):
    • 精准查找内容:^([^,]+,[^,]+,)(sam@example.com|sam2@example.com),([yn],)$
    • 替换内容:\1\2,\3banana
    • 点击“全部替换”,这些行的favourite_fruit会自动填上banana。
  3. 剩下未匹配到的行,favourite_fruit列保持空值即可,无需额外操作。

大量邮箱的批量处理技巧

要是三个列表里邮箱成百上千,手动写正则太费劲,用命令行生成匹配串:

  1. 比如用Git Bash或Windows cmd处理good_emails.txt:
    tr '\n' '|' < good_emails.txt | sed 's/|$//' > good_regex.txt
    
    这会把所有邮箱拼成邮箱1|邮箱2|邮箱3的格式,直接复制到EmEditor的查找规则里就行。
  2. 把生成的串套进之前的查找模板,比如^([^,]+,[^,]+,)([生成的正则串])(,,)$,再执行替换。

收尾验证

  1. 替换完成后随机抽查若干行,确认check_result和favourite_fruit列的内容符合要求。
  2. 用EmEditor的“另存为”功能保存修改后的文件(比如updated_database.csv),避免覆盖原始数据,留好备份。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:20:33