2016/04/06

文字列の読み方を表示する

自動生成したパスワードなどランダムな文字列をメイルなどで他人に伝える場合、 フォントによっては判別しずらい文字がある。
それらの判別しづらい文字を正確に伝えるために、 数字とアルファベットの読みを表示する簡単なプログラム。
標準入力から読み込んだ英数字の読みを表示し英数字以外は無視する。

  1#!/bin/sh
  2
  3awk 'BEGIN{
  4        p["0"] = "ぜろ";
  5        p["1"] = "いち";
  6        p["2"] = "に";
  7        p["3"] = "さん";
  8        p["4"] = "よん";
  9        p["5"] = "ご";
 10        p["6"] = "ろく";
 11        p["7"] = "しち";
 12        p["8"] = "はち";
 13        p["9"] = "きゅう";
 14        p["a"] = "エー";
 15        p["b"] = "ビー";
 16        p["c"] = "シー";
 17        p["d"] = "ディー";
 18        p["e"] = "イー";
 19        p["f"] = "エフ";
 20        p["g"] = "ジー";
 21        p["h"] = "エイチ";
 22        p["i"] = "アイ";
 23        p["j"] = "ジェイ";
 24        p["k"] = "ケー";
 25        p["l"] = "エル";
 26        p["m"] = "エム";
 27        p["n"] = "エヌ";
 28        p["o"] = "オー";
 29        p["p"] = "ピー";
 30        p["q"] = "キュー";
 31        p["r"] = "アール";
 32        p["s"] = "エス";
 33        p["t"] = "ティー";
 34        p["u"] = "ユー";
 35        p["v"] = "ブイ";
 36        p["w"] = "ダブリュー";
 37        p["x"] = "エックス";
 38        p["y"] = "ワイ";
 39        p["z"] = "ゼット";
 40    }
 41    {
 42        n = split(tolower($0), words, "");
 43        for(i=1; i<=n; i++){
 44            v = v g p[words[i]];
 45            g = " "
 46        }
 47        printf "%s (%s)\n", $0, v;
 48    }'
    

nkf (1) や kakashi (1) などで出来ないかとちょっとだけ探ったが、 出来ない様だったので適当にでっち上げた。
他にもっと良いものがあれば是非教えて下さい。

読みの部分を「アルファ」「ブラボー」「チャーリー」等とすれば フォネティックコードにも変換できる。


Copyright © 2008-2020 Mitzyuki IMAIZUMI. All rights reserved.