「覚え間違い」を教えてください!

カンマ区切りのファイルの欠損値をピリオドに一括変換したいのですが、awkのgsubがうまくいきません。
{gsub(/""/,".",$0);print}でエラーになります。
欠損値の正規表現はどうすればよいのでしょう。
もし、UNIXのコマンドで一括変換できるものがあればそちらも教えて下さい。お願いします。

A 回答 (2件)

CSVにはいくつかのフォーマットがあるので,「欠損値」やそれを「ピリオドに変換したもの」がどういうものなのか正確にわからないのですが,



,"",



,".",

に変換したいのであれば,たとえばPerlだと,

perl -e 's/\,\"\"\,/,".",/g'

みたいにすれば出来るのではないかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございました助かりました。awkでもgsub(/\\/,".")でいけました。¥の存在を忘れてました。
CSVファイル1行(1,2,,,,GI,9,,,)を
(1,2,.,.,.,GI,9,.,.,.)に一度でできました。
おまけにperlでの変換も覚えられたしラッキーでした。

お礼日時:2003/07/10 11:42

awkはわかりませんが、""を"."にするのではなくて、


",,"を",.,"にしてはいけませんか?
CSV(カンマ区切り)で個々のデータを見るのではなく、
行全体で置換してしまえば出来そうに思います。
    • good
    • 0
この回答へのお礼

そうですね。viで編集していた時はその方法で変換していたのですが、欠損値が連続する場合(,,,)と行末にある場合(,\n)は一度に変換されないため繰り返し編集が必要でした。データが大きいと結構時間かかってしまうんです。
行全体での置換はawkでも1度には無理かもしれません。でも挑戦してみます。ありがとうございました。

お礼日時:2003/07/09 19:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報