【问题标题】:Remove the commas in the double quotes from csv file in UNIX [closed]从 UNIX 中的 csv 文件中删除双引号中的逗号 [关闭]
【发布时间】:2023-03-03 16:41:01
【问题描述】:

我有一个文件 z.csv,它是 csv 文件。有些行内有双引号和逗号。我需要删除双引号中的逗号,然后从每条记录中删除双引号。


"abc","1,234",90,1

,"1,12,000","12,000",RTC

,,,

qqq,www,222,"323"

我需要这样的输出,

  • 输出:
abc,1234,90,1

,112000,12000,RTC

,,,

qqq,www,222,323

如果在 UNIX 中提供任何帮助,我们将不胜感激!!!

【问题讨论】:

  • 适当的 CSV 解析器会自动执行此操作。
  • 您能详细说明一下吗?
  • 我的意思是,CSV 解析器使用引号来决定哪些逗号分隔字段,哪些逗号是字段的一部分。您要问的基本上是“我如何编写 CSV 解析器?”
  • 是的,抱歉,我从未使用过 CSV 解析器

标签: linux bash unix awk sed


【解决方案1】:
$ awk '{
    while ( match($0,/"[^"]*"/) ) {
        fld = substr($0,RSTART+1,RLENGTH-2)
        gsub(/,/,"",fld)
        $0 = substr($0,1,RSTART-1) fld substr($0,RSTART+RLENGTH)
    }
    print
}' file
abc,1234,90,1

,112000,12000,RTC

,,,

qqq,www,222,323

如果这还不是您所需要的,请查看What's the most robust way to efficiently parse CSV using awk?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 2016-01-18
  • 2017-09-28
  • 2015-07-26
相关资源
最近更新 更多