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

如何用sed移除双引号字符串内的逗号?现有命令未生效

处理CSV字符串中双引号内的逗号问题

需求说明

原始字符串:

1,2,3,"test1,test2,test3",4,5,6

需要将双引号内的逗号全部删除,得到:

1,2,3,"test1test2test3",4,5,6

原命令错误分析

你执行的命令sed -i -e "s/,"([^,"]*)"//g" test.txt存在两个核心问题:

  1. 正则逻辑错误:该命令试图匹配",xxx"格式的内容并替换为空,完全偏离了删除引号内逗号的需求;
  2. 语法错误:sed默认使用基础正则,未加-E参数时括号()需要转义,否则会被当作普通字符处理,导致匹配失效。

正确的sed命令

使用扩展正则配合循环替换,确保引号内所有逗号都被删除:

sed -i -E ':loop s/("[^",]*),([^"]*")/\1\2/g; t loop' test.txt

命令解释

  • -E:启用扩展正则表达式,无需转义括号;
  • :loop:定义循环标签,用于重复执行替换操作;
  • s/("[^",]*),([^"]*")/\1\2/g:精准匹配双引号内的单个逗号,将其替换为空(保留引号内的其他内容);
  • t loop:如果上一次替换成功,跳转到loop标签继续执行,直到引号内无逗号可替换为止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 23:26:16