[Hyper Estraier] Hyper Estraierの検索結果を表示するコマンド その2

はじめに

この記事は、id:SumiTomohiko:20070502:1178119948の続きです。

問題点

id:SumiTomohiko:20070502:1178119948で作成したスクリプトには、以下の問題点がありました。

  1. 最大10件しか表示されない。
  2. 表示される順序がランダムである。

また、以下のようにした方がよいのでは、とも思いました。

  1. 複数のファイルに対してまとめてnkfしているが、個々のファイルに対してその都度nkfした方がよい (?)。

解決方法

解決方法は、以下の通りです。

  1. estcmd searchコマンドに、"-max -1"オプションを追加する(-maxオプションに負数を指定すると、すべて出てくる)。
  2. estcmd searchコマンドの結果を、sort -nコマンドでソートする。
  3. nkfコマンドの場所を変更する。

最終的なスクリプトは、以下の通りです。

#!/bin/sh

awk="/usr/bin/awk"
cat="/bin/cat"   
estcmd="/usr/bin/estcmd"
sort="/usr/bin/sort"
nkf="/usr/bin/nkf"

db="${HOME}/mail.db"

${estcmd} search -max -1 "${db}" "$@" | ${awk} 'BEGIN{
    line = 0;
}
/^--------/{
    line++;
}
/^[0-9]+$/{
    if (line == 2) {
        print $0;
    }
}' | ${sort} -n | while read id
do
    ${estcmd} get "${db}" ${id} _lreal
done | while read file
do
    ${cat} "${file}" | ${nkf} -w
done

所感

まだ1日しか使っていませんが、使い心地はよいです(具体的に言うと、検索速度が十分速いです)。

それと上のスクリプトのように、パイプが繋がっているのを見ると、私は美しいと感じるのですが、これは私だけですかそうですか。