3

フィールドを一重引用符で囲んで、警告やエラーなしで mysql にインポートできるようにするにはどうすればよいのでしょうか。

多くのコンテンツを含む csv ファイルがあります。

16:47:11,3,r-4-VM,250000000.,0.50822578824,131072,0,0,0,0,0

望ましい出力

'16:47:07','3','r-4-VM','230000000.','0.466028518635','131072','0','0','0','60','0'

どこから始めればいいのか本当にわかりません。あなたの助けに感謝します。

4

6 に答える 6

17

あなたはこれを試すことができます

awk -F"," -v quote="'" -v OFS="','" '$1=$1 {print quote $0 quote}' file
  1. 各区切り記号 (, コンマ) を (',' quote-comma-quote) に置き換えます ->(-F"," -v OFS="','")
  2. 行頭と行末に引用符を追加 ->(print quote $0 quote)
于 2013-05-10T21:26:41.120 に答える
1

これを試して:

awk '{gsub(/^|$/,"\x027");gsub(/,/,"\x027,\x027")}7' file

kent$  echo "16:47:11,3,r-4-VM,250000000.,0.50822578824,131072,0,0,0,0,0"|awk '{gsub(/^|$/,"\x027");gsub(/,/,"\x027,\x027")}7'
'16:47:11','3','r-4-VM','250000000.','0.50822578824','131072','0','0','0','0','0'
于 2013-05-10T21:05:13.383 に答える
1
#!/usr/bin/awk -f

BEGIN { FS=OFS=","}

{
    for (i = 1; i <= NF; ++i)
        $i = "'" $i "'"
    print
}

最初に、FS(フィールド区切り文字) をコンマに設定します。またOFS、出力フィールドセパレーターをコンマに設定します。

入力行ごとに、すべてのフィールドをループします。 NF現在の行から解析されたフィールドの数です。各フィールドを単一引用符で囲んだ独自の値に設定します。

フィールドの更新が完了したら、変更された行を出力します。

于 2013-05-10T21:02:04.187 に答える
1

これはうまくいくかもしれません(GNU sed):

sed -r 's/[^,]+/'\''&'\''/g' file

また:

sed -r "s/[^,]+/'&'/g" file
于 2013-05-10T21:59:23.900 に答える