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

出力を新しいファイルに送信するには、>シェル演算子を使用します。

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,3,4この特定の質問では、一般的なパターンは、引用符が行の先頭と末尾にあることです。つまり、フィールド 1 は null、フィールド 2 は null 、フィールド 3 はフィールド区切り記号と考えることもできます。また null です。だから私たちはこれを行うことができます:

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

行全体の部分文字列を取り出すこともできます。

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

最初の文字と最後の文字を削除する方法について言えば、これに関するstackoverflowの完全な記事があります。sedPOSIXシェルなどの他のツールと組み合わせて使用​​されます。

答え3

別の解決策sed

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

答え4

このコマンドを使用できます

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

関連情報