カンマ間の文字列の周りに引用符を追加しますが、数字の周りに引用符を追加しないでください。

カンマ間の文字列の周りに引用符を追加しますが、数字の周りに引用符を追加しないでください。

だから私のファイルにはCSV形式をほとんど表すいくつかのテキストがありますが、正確ではありません。しかし、CSVファイルに変換したいです。

たとえば、次のようになります。

cuz,0,1,2,3,-4,abc,a b c,0

どうすればそれを変更できますか?

"cuz",0,1,2,3,-4,"abc","a b c",0

どんな助けでも大変感謝します!

よろしくお願いします。

答え1

愚かな方法:

gawk -i inplace -F, '{for(i=1;i<=NF;i++){ 
      if ($i!~/^-?[0-9]*$/) $i=sprintf("\"%s\"",$i); }}1' OFS=',' file

コンテンツfile:

"cuz",0,1,2,3,-4,"abc","a b c",0

-i inplace- 許可する所定の位置にファイルの変更

$i!~/^-?[0-9]*$/- パターンは、数字以外の文字を含むフィールドにのみ一致します。

関連情報