
ファイル内に、ほぼ 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]*$/
- 数字以外の文字を含むフィールドのみにパターンマッチングする