如何使用sed等基础工具替换CSV分隔符且不修改引号内的逗号
解决方案
因为你所有字段都被英文双引号包裹,字段之间的分隔逗号只会出现在两个双引号的间隔位置,精准匹配该位置替换即可避免误改字段内部的逗号。
适用命令(匹配逗号后带空格的样例格式)
sed 's/", *"/";"/g' prod.txt
- 匹配规则:精准匹配
"+逗号+任意数量空格+"的字段分隔结构,完全不会触及字段内部的逗号 - 如果你的文件分隔符是无空格的严格
","格式,把命令改为sed 's/",/";/g' prod.txt即可
效果示例
输入行示例:"无线耳机","索尼,WH-1000XM5","1799","音质好,降噪强","上海","4.8"
执行命令后输出:"无线耳机";"索尼,WH-1000XM5";"1799";"音质好,降噪强";"上海";"4.8"
直接修改原文件的参数
- Linux 环境:添加
-i参数:sed -i 's/", *"/";"/g' prod.txt - macOS 环境:需要添加空后缀参数:
sed -i '' 's/", *"/";"/g' prod.txt
内容的提问来源于stack exchange,提问作者Xing
相关产品推荐
相关产品推荐

