新しいGAWK --csvオプションで””の中のコンマを区別してくれる
・awkが新しくなる!? 本家AwkがUnicode (UTF-8)とCSV対応に!
@ko1nksm(Koichi Nakashima):最終更新日 2023年11月14日投稿日 2023年09月14日
という記事を発見。
GAWKで処理するCSVファイルの文字列、「""」で囲まれた中に
「,」が入っていると、うまく処理できませんでした。
「FS = ","」としてフィールドセパレータをコンマに
したとき、「"ABC,DEF"」という文字列は
「"ABC」と「DEF"」と二つに分かれてしまい、うまく処理
できません。
例えば・・・・DigiKeyの買い物でやってくるCSVの買い物リスト。
インデックス,DigiKey品番,メーカー品番,商品概要,客先参照品番,数量,繰越注文,単価,合計金額
1,296-14086-5-ND,CD4011UBE,IC GATE NAND 4CH 2-INP 14DIP,,5,0,\120.00000,¥600
2,MCP6541RT-I/OTCT-ND,MCP6541RT-I/OT,IC COMPARATOR 1 GEN PUR SOT23-5,,30,0,¥53.56000,"¥1,607"
3,1727-3494-1-ND,"74LVC1GX04GW,125",IC X-TAL DRIVER 6TSSOP,,10,0,¥57.90000,¥579
「FS=","」では、赤文字のところの分離に失敗してしまうのです。
1.はOK。
2.が最後の合計金額「"¥1,607"」をミス。
千単位の区切り記号「,」で左右に分かれちゃうのです。
3.だと「"74LVC1GX04GW,125"」が別れ別れに。
「gawk-5.3.1」だとこれを回避してくれて、例えば、こんな具合に
型番、数量、単価、合計に分離できるのです。
メーカー品番 数量 単価 合計金額
CD4011UBE 5 120.00000 600
MCP6541RT-I/OT 30 53.56000 1607
74LVC1GX04GW,125 10 57.90000 579
このCSV、そのままエクセルに食わせれば処理でき
るのですが、
・「¥」記号はいらん
・千区切りの「,」もいらん
となったときは、GAWKで文字列操作をしたくなります。
それが、今まではうまいこといかなかったのです。
これで、エクセルを使わないでリストが整理できます。
DigiKeyの買い物リスト整理で使い始めたばかりなんで、
落とし穴があるかもしれません。
| 固定リンク
「AWK(GAWK)」カテゴリの記事
- 新しいGAWK --csvオプションで””の中のコンマを区別してくれる(2025.02.25)
- BSch3V CE3ファイルからコメント文字をピックアップ(2022.11.09)
- 「トラ技」の記事検索(2022.08.31)
- サーミスタ温度計、何ビットのA/Dコンバータがいるか?(2021.08.11)
- gawk 文字列から1文字を取り出して8bit数値として扱いたい(2020.10.21)
コメント