在ksh脚本中移除CSV文件第14列的转义双引号
解决CSV第14列转义双引号问题
方法一:用awk处理(推荐)
awk处理CSV列更直观,能精准定位第14列替换转义引号:
BEGIN{FS=OFS=","} {gsub(/\\"/,"",$14); print} 你的文件名.csv
BEGIN{FS=OFS=","}:设置输入、输出的分隔符均为逗号gsub(/\\"/,"",$14):仅在第14列中,把所有\"替换为空字符串print:输出处理后的整行
这个命令只会修改第14列内容,其他列的双引号和格式完全保留,完美匹配需求。
方法二:用sed处理(兼容无GNU -E选项环境)
如果必须用sed,可通过循环替换限定仅处理第14列内的转义引号:
sed -e ':loop' -e 's/\(\([^",]*,"\)\{13\}"[^"]*\)\\\("\)/\1\2/' -e 't loop' 你的文件名.csv
:loop:定义循环标签- 正则部分:先匹配前13列内容,接着匹配第14列的开头引号和后续非引号字符,捕获到
\"后将其替换为空 t loop:如果替换成功,回到循环标签继续处理,直到第14列内所有\"都被替换
验证效果
处理你给出的示例记录后,输出与期望一致:
"22-11-2020","ABCD",,"ABCD/4400","7644","NY","NY","LAX","ABC","16-09-2023","25-09-2023","02-10-2023","660802","993 14 X 8","28-09-2023",4,"CA",2586,"AA",65.850000,6895.200000,"01-11-2023"
内容的提问来源于stack exchange,提问作者ImSahil
相关产品推荐
相关产品推荐

