Linux
如何刪除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,"\"");
但沒有幫助。感謝任何幫助。
使用
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 為空,欄位 2 為
1,2,3,4
,欄位 3 也為空。因此,我們可以這樣做:awk -F '"' '{print $2}' input.csv
我們還可以取出整行的子字元串:
awk '{print substr($0,2,length()-2)}' quoted.csv
說到剝離第一個和最後一個字元,stackoverflow 上有一整篇關於使用其他工具(如
sed
POSIX shell)的文章。
最簡單的方法:
tr -d '"' <a.csv >b.csv