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

使用Shell脚本提取分隔CSV指定列子串并保存为新文件

按规则截取|分隔CSV字段的Shell实现方案

直接使用awk即可完成单命令全列处理,无需逐列单独调用cut拼接,单次遍历文件即可完成处理,对大文件兼容性好。

具体实现命令

awk -F'|' 'BEGIN{OFS="|"} NR==1{print; next} {print substr($1,1,3), substr($2,1,6), substr($3,1,1), substr($4,1,1), $5}' input.csv > output.csv

将命令中input.csv替换为你的原文件路径,output.csv为生成的新文件路径即可。

逻辑说明

  • -F'|':指定输入文件的字段分隔符为|
  • BEGIN{OFS="|"}:设置输出文件的字段分隔符和原文件保持一致,为|
  • NR==1{print; next}:第一行是CSV表头,直接原样输出,不执行截取逻辑
  • 数据行处理完全匹配截取规则:
    • 第1列(Col1)调用substr($1,1,3)取前3个字符
    • 第2列(Col2)调用substr($2,1,6)取前6个字符
    • 第3列(Col3)、第4列(Col4)调用substr取第1个字符
    • 第5列(Col5)直接原样输出

效果验证

用提供的样例文件执行上述命令后,输出内容如下,完全符合预期:

Col1|Col2|Col3|Col4|Col5
120|145678|P|I|samrat
134|456788|T|A|jhurt
678|120987|U|T|pord

如果不需要保留原表头,直接删除命令里的NR==1{print; next}段即可。如果某列实际长度小于要截取的长度,substr函数会自动返回该列的全部内容,不会抛出报错。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:09:20