カンマで囲まれた文字列は引用符で囲みますが、数字は引用符で囲みません。

カンマで囲まれた文字列は引用符で囲みますが、数字は引用符で囲みません。

ファイル内に、ほぼ CSV 形式を表すテキストがありますが、完全には 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]*$/- 数字以外の文字を含むフィールドのみにパターンマッチングする

関連情報