管道分隔符和一些带有逗号的字段应该放在双引号中,并且应该被视为单字段

管道分隔符和一些带有逗号的字段应该放在双引号中,并且应该被视为单字段

我有一个 csv 文件。

输入。

India|Andhra|asd,ged,ijn|telangana|41657|hgjd,dfef,edf|dfd

输出

India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd

答案1

使用csvformat来自csvkit:

$ csvformat -d '|' file.csv
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd

csvkit 工具箱中的工具是 CSV 感知的(它们都是用于修改和查询的 CSV 解析器,通常在命令行上处理 CSV 文件)。

在这里,我使用csvformat重新格式化输入文件,并使用 指定输入中的字段分隔符是管道符号-d '|'。默认情况下,输出将使用逗号作为字段分隔符,并且该工具将根据需要转义并引用内容。

答案2

如果你安装了红宝石:

ruby -rcsv -e '
    rdr = CSV.new(File.new(ARGV.shift), col_sep: "|")
    wtr = CSV.new($stdout)
    rdr.each {|row| wtr << row}
' file.csv
India,Andhra,"asd,ged,ijn",telangana,41657,"hgjd,dfef,edf",dfd

相关内容