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

基于Bash与GNU工具按行长度插入逗号恢复CSV列

用Bash和GNU工具恢复CSV列的最优方法

核心思路

你的需求本质是将每行最后5个字符固定为第二列,前面的内容作为第一列,无需单独判断行长度,直接基于这个规则处理即可,以下是两种高效实现方式:


方法1:GNU Sed正则替换

这是最简洁的实现方式,利用正则表达式直接拆分每行:

sed -E 's/(.*)(.{5})/\1,\2/' input.csv > output.csv
  • 说明:-E启用扩展正则,(.*)匹配除最后5个字符外的所有内容,(.{5})匹配末尾5个字符;替换时在两部分之间插入逗号,一键完成拆分。

方法2:Awk按字符位置拆分

逻辑更直观,通过字符串截取实现:

awk '{print substr($0, 1, length($0)-5) "," substr($0, length($0)-4)}' input.csv > output.csv
  • 说明:substr($0,1,length($0)-5)提取开头到倒数第6个字符的部分(第一列),substr($0,length($0)-4)提取倒数第5个字符到结尾的部分(第二列),用逗号拼接后输出。

优势说明

这两种方法均依赖系统默认自带的GNU工具,无需额外安装软件;无需逐行判断行长度,直接贴合“第二列固定5字符”的核心需求,代码简洁且处理大文件时性能优异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:24:57