« コードレス電話の充電池がアウト #3 | トップページ | 8ビットマイコンの割り込み処理・・・言い足りないぞ »

2022年8月31日 (水)

「トラ技」の記事検索

トランジスタ技術に載っていた記事を探すなら
  ・「トランジスタ技術」目次データベース
解凍して出てくる「TR.txt」(1.7Mバイトほど)がベタの
テキストファイルで、CSV形式になっています。

記事の検索ツールも付いているのですがちょっと不便なことも。
  ・著者名の姓と名がくっついていたり(昔の記事)、
   スペースで分離していたり。
  ・「-」の使い方。
   ADCとかA-Dコンバータとかの言い回しの違い。
  ・「・」で区切った言葉。
  ・英大文字と小文字の区分。
grepで全文検索するとき、小文字大文字の区別は無しでてなことに
しても、ちょっとした違いで見逃しが発生します。

そこで、こんな「gawk」を使ったツールを使っています。

・コマンドプロンプトで。
・バッチファイルから起動。
・gawk.exeをパスが通っているところに置いて。
・tr.txtのあるフォルダで。
・tr 下間憲行
 としたら、私の書いた記事が、がさ~っと出てきます。

◎tr.bat
~~~~~~~~~~~~~~~~~~~
echo off
rem "TR.TXT 文字列検索"
rem "入力文字の確認"
if "%1"=="" GOTO HELP

rem GAWKを起動
gawk -f tr.awk tr.txt %1 %2 %3
goto END

rem ヘルプ表示
:HELP
echo 「TR 検索文字列」と入力してください.
:END
~~~~~~~~~~~~~~~~~~~

◎tr.awk
~~~~~~~~~~~~~~~~~~~
# tr.txt 文字検索
BEGIN{
msg = ARGV[2] # 1つめに"tr.txt"が入って
ARGV[2] = "" # 2つめが検索文字列
msg = tolower(msg) # 小文字で比較
printf("# 検索文字 : %s\n", msg)
print
}
# 検索実行
{
tr = $0 # tr.txtの1行
gsub(/[  ・\-\/]/, "", tr) # 半角全角スペースと・-/を除く
tr = tolower(tr) # 小文字で比較
if(match(tr , msg)) print $0 # 一致で1行出力
}
~~~~~~~~~~~~~~~~~~~

※追記

長音記号「ー」も無視できるようにするほうが良いかと。

(1) バッチファイル起動で入力する文字の
  「・ーー-/」を消してしまう。

BEGIN{ のところ
ARGV[2] = "" # 2つめが検索文字列
gsub(/[・ー\-\-\/]/, "", msg) # 記号を除く
msg = tolower(msg) # 小文字で比較


(2) 読み出し処理での無視文字に「ーー」を追加

tr = $0 # tr.txtの1行
gsub(/[  ・ー\-\-\/]/, "", tr) # スペースと記号を除く
tr = tolower(tr) # 小文字で比較

~~~~~~~~~~~~~~~~~~~~~~~~~~~

著者名「氏名の分離」を無くすのと「・/-」の無視だけで、
だいぶと使いやすくなります。

  ※tr.txtに「全角英数」文字は出てこないみたいです。


|

« コードレス電話の充電池がアウト #3 | トップページ | 8ビットマイコンの割り込み処理・・・言い足りないぞ »

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

コメント

コメントを書く



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




« コードレス電話の充電池がアウト #3 | トップページ | 8ビットマイコンの割り込み処理・・・言い足りないぞ »