次の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の完全な記事があります。sed
POSIXシェルなどの他のツールと組み合わせて使用されます。
答え3
別の解決策sed
:
sed -e 's/"//g' a.csv > b.csv
答え4
このコマンドを使用できます
awk '{gsub("\"",RS);print}' a.csv > b.csv