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

EmEditor中CSV筛选后指定列前插入分隔符的技术问询

问题描述

我有一个20列、数百万行的CSV表格(分隔符为|),数据为公开自愿披露信息。已筛选出第20列为空的目标行(筛选条件为第19列值匹配^(One Manager OR More Than One Manager OR All LLC Member(s))),需要对这些行执行以下操作:

  • 将第19列的内容(包括仅含换行符的情况)移至第20列
  • 第19列置空

本质是要在目标行的第19列左侧插入分隔符|,此前尝试通过搜索替换分隔符的方式未找到正确的列操作方法。

示例数据
ENTITY_NAME|ENTITY_NUM|INITIAL_FILING_DATE|JURISDICTION|ENTITY_STATUS|STANDING_SOS|ENTITY_TYPE|FILING_TYPE|FOREIGN_NAME|STANDING_FTB|STANDING_VCFCF|STANDING_AGENT|SUSPENSION_DATE|LAST_SI_FILE_NUMBER|LAST_SI_FILE_DATE|PRINCIPAL_ADDRESS|MAILING_ADDRESS|PRINCIPAL_ADDRESS_IN_CA|LLC_MANAGEMENT_STRUCTURE|TYPE_OF_BUSINESS
|3553873|02/25/2013|ILLINOIS|Active|Good|Stock Corporation - Out of State - Stock|Foreign|"HARRIS ELEVATOR"|Good|Good|Good||LBA285834|Mar  2 2022 12:00AM|521 NORTH ILLINOIS STREET ATWOOD IL  61913|521 NORTH ILLINOIS STREET ATWOOD IL  61913||ELEVATOR MANUFACTURING
|2680629|09/27/2004|NEVADA|Terminated|Good|Stock Corporation - Out of State - Stock|Foreign|"RS47"|Good|Good|Good|2008-12-26 00:00:00.000|LBA55830|Aug  1 2007 12:00AM|8383 WILSHIRE BLVD #116 BEVERLY HILLS CA  90211|8383 WILSHIRE BLVD #116 BEVERLY HILLS CA  92708|8383 WILSHIRE BLVD #116 BEVERLY HILLS CA  92708|PERSONAL CARE PRODUCTS
#1 CASH 4 JEWELS, INC.|3326312|10/26/2010|CALIFORNIA|Terminated|Good|Stock Corporation - CA - General|Domestic||Good|Good|Good|2013-04-02 00:00:00.000|LBA413061|May  1 2013 12:00AM|11069 WARNER AVE FOUNTAIN VALLEY CA  92708|11069 WARNER AVE FOUNTAIN VALLEY CA  92708|11069 WARNER AVE FOUNTAIN VALLEY CA  92708|JEWELRY BUYING
解决方案

推荐使用awk处理,它适合高效操作大体积CSV文件,直接按列处理无需复杂的搜索替换:

基础版(仅处理第20列为空的行)

awk -F'|' -v OFS='|' '
NR == 1 {print; next}
$20 ~ /^[[:space:]]*$/ {
    $20 = $19
    $19 = ""
}
1' input.csv > output.csv

进阶版(同时匹配第19列筛选条件+第20列为空)

如果需要在命令中直接整合筛选条件(无需提前筛选行),可以使用:

awk -F'|' -v OFS='|' '
NR == 1 {print; next}
$19 ~ /^(One Manager|More Than One Manager|All LLC Member\(s\))$/ && $20 ~ /^[[:space:]]*$/ {
    $20 = $19
    $19 = ""
}
1' input.csv > output.csv

命令说明

  • -F'|':指定输入分隔符为|
  • -v OFS='|':指定输出分隔符为|,保证输出格式与原文件一致
  • NR == 1 {print; next}:保留表头行,直接输出不做处理
  • $20 ~ /^[[:space:]]*$/:匹配第20列为空或仅含空白字符(包括换行符)的行
  • 对匹配的行,将第19列内容赋值给第20列,随后清空第19列
  • 最后的1:输出所有行(处理后的目标行+未匹配的正常行)

该命令直接将处理结果输出到新文件output.csv,不会修改原文件,适合处理数百万行的大文件,内存占用低、处理速度快。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:54:27