如何删除 csv 中的双引号

如何删除 csv 中的双引号

我有一个 CSV 文件,例如

a.csv
"1,2,3,4,9"
"1,2,3,6,24"
"1,2,6,8,28"
"1,2,4,6,30"

我想要类似的东西

b.csv
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30

我尝试过awk '{split($0,a,"\"");但没有帮助。任何帮助都是值得赞赏的。

答案1

最简单的方法:

tr -d '"' <a.csv >b.csv

答案2

使用gsub()函数进行全局替换

$ awk '{gsub(/"/,"")};1' input.csv                    
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30

要将输出发送到新文件,请使用>shell 运算符:

awk '{gsub(/"/,"")};1' input.csv > output.csv

也可以使用拆分为数组的方法,尽管这不是必需的,但您可以这样使用它:

$ awk '{split($0,a,/"/); print a[2]}' input.csv       
1,2,3,4,9
1,2,3,6,24
1,2,6,8,28
1,2,4,6,30

请注意,在这个特定问题中,一般模式是引号位于行的开头和结尾,这意味着我们也可以将其视为字段分隔符,其中字段 1 为 null,字段 2 为1,2,3,4,字段 3 也为 null。因此,我们可以这样做:

awk -F '"' '{print $2}' input.csv

我们还可以取出整行的子串:

awk '{print substr($0,2,length()-2)}' quoted.csv

说到剥离第一个和最后一个字符,有一个stackoverflow 上的整篇文章都是关于这个的与其他工具(例如sedPOSIX shell)一起使用。

答案3

另一个解决方案sed

sed -e 's/"//g' a.csv > b.csv

答案4

你可以使用这个命令

awk '{gsub("\"",RS);print}' a.csv >  b.csv

相关内容