我有一个 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 上的整篇文章都是关于这个的与其他工具(例如sed
POSIX shell)一起使用。
答案3
另一个解决方案sed
:
sed -e 's/"//g' a.csv > b.csv
答案4
你可以使用这个命令
awk '{gsub("\"",RS);print}' a.csv > b.csv