Unix-用双引号括住 CSV 的第一列

Unix-用双引号括住 CSV 的第一列

我有以下格式的数据-

4,"abc"
8,"def"
9,"ghi"

我想用双引号将第一列的值括起来。

"4","abc"
"8","def"
"9","ghi"

我怎么做 ?

答案1

一个非常简单的替换是:

awk -F, '{sub($1, "\"&\""); print}' tmp.csv

(谢谢邪恶汤)。

选项 -F 告诉 awk 字段分隔符是逗号,sub(stitution) 参数告诉 awk 用其自身 (&) 替换第一个字段,前面和后面都加上“。

答案2

这可能对你有用(GNU sed):

sed 's/[^,]*/"&"/' file

答案3

这只是一种快速而肮脏的方法(会有更好的方法):

sed -e 's/"//g' -e 's/^\|$/"/g' -e 's/,/","/g' file.csv

第一个命令s/"//g删除所有"
然后在行首和行末s/^\|$/"/g添加。 最后一个命令用替换所有。"
s/,/","/g,","

当然这个仅有的如果你没有"并且, 你的田地。

相关内容