« 東芝インパルス TNH-3LE 950mAh 充放電実験 2000cyc目 | トップページ | オペアンプ OPA1612じゃないぞ! »

2025年2月25日 (火)

新しい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の買い物リスト整理で使い始めたばかりなんで、
落とし穴があるかもしれません。

|

« 東芝インパルス TNH-3LE 950mAh 充放電実験 2000cyc目 | トップページ | オペアンプ OPA1612じゃないぞ! »

AWK(GAWK)」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 東芝インパルス TNH-3LE 950mAh 充放電実験 2000cyc目 | トップページ | オペアンプ OPA1612じゃないぞ! »