删除UNIX中csv文件中双引号中的逗号

时间:2020-06-04 19:51:24

标签: linux bash unix awk sed

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


"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中,任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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?