2004年06月29日

CSV

最近、SE よりの話をあんまり書いていない気がします。
仕事のことって、既になんか普通になってて、
取り立てて強く思わないんですよねー。
熱意が薄れちゃったのかなぁ?
その割には転職しようとしてるし、一体何なんでしょね?
ってわけで、たまには技術的なことを。

皆さんは csv ファイルをご存知でしょうか?
csv=comma separated value
の名前どおり "," をフィールドセパレータにした、テキストファイルです。
通常の場合は
awk -F, '{ほげほげ〜}' csvファイル
とかでフィールドを分けて処理できるのですが、コレではうまくいかない場合があります。
それは、csv ファイルの任意のフィールドの中に "," (カンマ) の文字が入っている場合です。

たとえばこんな感じです↓
"だいいちふぃーるど","第2フィールド","AT,フィールド"

コレは本来 3 つのフィールドですが、
前述のような書き方で awk で処理するとフィールドが 4 つとして処理されます。
というわけで、この不具合を避けるため、ダブルクォートの処理を考える必要がありますが、
この場合はダブルクォートの中のダブルクォートの処理はどうなるのかという、
問題が出てきます (普通に考えればエスケープシーケンス使います)
以上の注意点をわかってるのでちゃんとコーディングすれば、
処理で問題は起きないんですが、これが面倒だってことが問題です。

シェルスクリプトで処理するには面倒です・・・。
誰か助けて。
シェルスクリプトで csv を処理してる人、どうぞコード例貼ってください m(_ _)m
あーあー。素直に perl に逃げようかなぁ・・・

追記 2004/07/01 21:40
ごめんなさい。一つ間違いがありました。
ダブルクォートの中のダブルクォートはダブルクォート二つで表現するそうです。
(エスケープシーケンスじゃないようです)
つまり、「日本語ニホンコ"nihongo」 (ゴじゃなくコ" です) が CSV の
中の 2 番目のフィールドに現れた場合は以下のような CSV になります。

"だいいちふぃーるど","日本語ニホンコ""nihongo","AT,フィールド"

人に指摘される前に、間違いがわかってよかったぁ♪

Posted by k-square : 2004年06月29日 22:31 | Linux/UNIX
コメント
コメントする









名前、アドレスを登録しますか?