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

使用sed去除数值周围的引号:CSV文件解析需求

针对CSV数值列去引号的sed解决方案

刚好碰到过类似的CSV处理场景,给你一个精准的sed命令,完美适配你这种「仅第二列保留引号字符串,其余数值列要去掉误加的引号」的需求:

sed -E 's/^"(-?[0-9]+\.?[0-9]*)"/\1/; s/,"(-?[0-9]+\.?[0-9]*)"/,\1/g' your_input.csv

命令拆解:

  • 第一个替换规则 s/^"(-?[0-9]+\.?[0-9]*)"/\1/:专门处理第一列开头的引号数值,比如把"-0.00100"直接转成-0.00100。
  • 第二个替换规则 s/,"(-?[0-9]+\.?[0-9]*)"/,\1/g:处理除第二列外的所有后续列——匹配逗号后紧跟的「引号包裹的数值」,把, "-45.67"这种格式改成,-45.67,全局替换确保所有符合条件的列都被处理。

适配扩展:

如果你的数值还包含科学计数法(比如"1.23e-4"),可以把正则调整成支持科学计数的版本:

sed -E 's/^"(-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9]+)?)"/\1/; s/,"(-?[0-9]+(\.[0-9]*)?([eE][+-]?[0-9]+)?)"/,\1/g' your_input.csv

效果示例:

原CSV行:

"-0.00100","BAR",999,"123.45","-6.78e-2"

处理后输出:

-0.00100,"BAR",999,123.45,-6.78e-2

可以看到第二列的"BAR"完全保留,其他数值列的引号都被干净移除了,刚好解决你提到的第444、555行的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:56:46