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

如何使用Linux工具为CSV文件最后一列添加引号?

给CSV最后一列添加引号的Linux工具方案

当然有可行的方案!这里给你几个用Linux常用工具实现的简便方法,都是一行命令就能搞定:

方法1:用awk(推荐,处理列更直观)

awk是处理结构化文本的神器,针对你的需求,可以这样写:

awk -F ', ' 'BEGIN{OFS=", "} {if(NR>1) $NF="\""$NF"\""; print}' your_file.csv

解释:

  • -F ', ':指定输入的字段分隔符是逗号加空格
  • BEGIN{OFS=", "}:设置输出的字段分隔符和输入一致,保证格式不变
  • if(NR>1) $NF="\""$NF"\"":跳过第一行表头(NR是行号),把最后一列($NF代表最后一个字段)用双引号包裹
  • print:打印处理后的每一行

测试你的输入:

输入:
column1, column2, column3
1, 03-12-2017, some text, with commas

运行命令后输出就是你想要的:

column1, column2, column3
1, 03-12-2017, "some text, with commas"

方法2:用sed(适合正则爱好者)

sed擅长文本替换,用正则匹配最后一列的位置:

sed -E '2,$ s/(.*, )(.*)/\1"\2"/' your_file.csv

解释:

  • -E:启用扩展正则表达式,让语法更简洁
  • 2,$:只处理第二行到最后一行,跳过表头
  • s/(.*, )(.*)/\1"\2"/:把每行分成两部分,第一部分是从开头到最后一个“逗号加空格”,第二部分是剩下的内容(也就是最后一列),然后把第二部分用双引号包起来替换回去

如果你的CSV分隔符是纯逗号(没有空格),只需要调整正则里的分隔符就行:

sed -E '2,$ s/(.*,)(.*)/\1"\2"/' your_file.csv

小提示

如果想直接修改原文件(谨慎操作!建议先备份),可以:

  • awk加输出重定向:awk -F ', ' 'BEGIN{OFS=", "} {if(NR>1) $NF="\""$NF"\""; print}' your_file.csv > temp.csv && mv temp.csv your_file.csv
  • sed加-i参数(GNU sed):sed -i -E '2,$ s/(.*, )(.*)/\1"\2"/' your_file.csv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:34:57