[ 先頭 | 上へ | 前へ | 次へ | 目次 | 索引 ]

Analog 4.16: エイリアス(別称)


analogがログファイルの各項目を読み込んだ後、analogは各項目にエイリアスを適用します。 もし大文字小文字を区別しないファイルシステムなら、analogはファイル名を小文字に変換します。 通常analogはUnixとBeOSファイルシステムは大文字小文字の違いを認識し、それ以外のシステムは区別しないと仮定します。 例えば、もしファイルを別のコンピュータに転送したなら、元のマシンの条件を使うようにこの設定を無効にしたい場合があるかもしれません。 以下のコマンドでこれをすることができます。
CASE INSENSITIVE     (訳者注:# 大文字小文字を区別しない)
CASE SENSITIVE       (訳者注:# 大文字小文字を区別する)
もしログファイルがこられらを記録するなら、ユーザー名にもにたコマンドがあります。 初期設定によって、ユーザー名は常に大文字小文字の違いを無視しますが、以下を優先して指定することができます。
USERCASE SENSITIVE   (訳者注:# 大文字小文字を区別する)

次に、analogは内蔵したエイリアスをそれぞれの項目に適用します。 例えば、ファイル名や参照元の%7E~と等しく、それに応じて翻訳します。 また、ディレクトリからファイル名の接尾辞を取り除きます。 この接尾辞は通常はindex.htmlですが、以下のコマンドによって代わりのもう一つ別のものを指定することができます。
DIRSUFFIX default.htm
(DIRSUFFIXは1つだけ指定できます。)別のビルトインエイリアスもあります:例えば、ホスト名はこの時点で小文字に変換されます。
この後、ユーザーによって指定されたエイリアスを適用します。 例えば、もしあなたが2つのファイル名が同じファイルに対応していると知っているときや、内部のホスト名をインターネット上の名称に変換したい場合にこれらのエイリアスは役立ちます。 以下のようなコマンドによってエイリアスを指定します。
FILEALIAS /football.html /soccer.html
HOSTALIAS lion lion.statslab.cam.ac.uk
他の全てのエイリアスをうち消す特別なコマンドFILEALIAS noneもあります。

他の項目に対するエイリアスにはBROWALIAS - ブラウザ名REFALIAS - リンク元USERALIAS - ユーザー名、そしてVHOSTALIAS - 仮想ホストがあります。 各項目に対しては1回だけエイリアスが適用されます。

FILEALIAS /football.html /soccer.html
FILEALIAS /soccer.html /brazil.html
ファイル/soccer.html/brazil.htmlへ変換されますが、/football.htmlはただ/soccer.htmlへ変換され、2つ目のエイリアスは適用されません。

エイリアスコマンドではワイルドカード(?*)も使えます。 また右側では、元の*と一致する名前の一部を表すのに$1$2等も使えます。 (右側で$を表示するには$$を使います。) 特別な略記として、もし左側に*がただ一つあるならば、右側で$1と同様に*を使うことができます。 例えば

FILEALIAS /*/football/* /soccer/
/sport/football/rules.html/soccer/へ変換しますが、
FILEALIAS /*/football/* /$1/soccer/$2         # または
FILEALIAS /sport/football/* /sport/soccer/*
もまた/sport/football/rules.html/sport/soccer/rules.htmlへ変換します。

analogの*は何でも表すわけではありません: もし2種類の可能な一致の仕方があれば、左側の表現ができる限り短くなる様な一致の仕方をとります。 これは頻繁に起こります。 しかし、例えばPerlの正規表現とは異なります。 (2つ連続する*は全く意味を持ちませんが、もし試したのであれば$1$2等を当てはめる前に、1つの*になってしまいます。)

もしファイルが検索引数を持つときはFILEALIASREFALIASの振る舞いはやや直感からはずれます。

Unixユーザーへの注意: もしコマンドラインで+Cを用いてALIASコマンドを与えたならば、シェルは$1等を適用したり展開したりして、あなたの望まない結果を出すでしょう。 このシェルの振る舞いを止めるには、2重引用符の代わりに1重引用符をコマンドに書いてください。


出力エイリアスと呼ばれるもう一つのエイリアスコマンド群があります。 タイムレポート以外の各レポートに対して、対応するコマンドがあります。 ログファイルが読み込まれるときに各項目に適用するのではなく、出力の各行に対して適用されます。 例えば、以下のコマンド
TYPEOUTPUTALIAS .txt ".txt (Plain text files)"
ファイルタイプレポート中でその行の説明を挿入します。

いくつかのALIASOUTPUTALIASコマンドは混乱を引き起こすかもしれません。 例えば、HOSTALIASHOSTOUTPUTALISAの違いは何でしょうか。 実際には、エイリアスが処理される時間の違いによる、いくつかの違いがあります。 HOSTALIASはホストの項目に適用されますが、HOSTOUTPUTALISAホストレポートの行に適用されます。 これはHOSTALIASはドメインレポートのようにホスト名を使う他のレポートにも影響を及ぼすことを意味しますが、HOSTOUTPUTALISAはホストレポートにだけ作用します。 また、HOSTOUTPUTALIASはホストレポートの各行に別々に適用されます。 これは、もし2つの異なるホスト名をHOSTALIASコマンドで同じ名前に変換した場合、それ以降一つのホストとして扱われます。 しかしもし同じようにHOSTOUTPUTALIASコマンドが使われたならば、それらは一つのレポート中ではたまたま同じ名前を持つ、二つの異なるホストになります。

要約すると、HOSTOUTPUTALIASはホスト報告に注釈を付けるか、あるいは明確にするために通常使われるであろうのに対して、HOSTALIASは1つのホストが2つの異なる名前を持っていて、2つの異なるホストと思われるような場合に使われます。

出力エイリアスの全ての一覧はREQOUTPUTALIAS - リクエストREDIROUTPUTALIAS - リダイレクトFAILOUTPUTALIAS - ファイル不在TYPEOUTPUTALIAS - ファイルタイプDIROUTPUTALIAS - ディレクトリHOSTOUTPUTALIAS - ホストDOMOUTPUTALIAS - リモートドメインORGOUTPUTALIAS - ドメインREFOUTPUTALIAS - リンク元REFSITEOUTPUTALIAS - リンク元サイトREDIRREFOUTPUTALIAS - リダイレクトリンク元FAILREFOUTPUTALIAS - ファイル不在リンク元BROWOUTPUTALIAS - ブラウザ概要FULLBROWOUTPUTALIAS - ブラウザOSOUTPUTALIAS - OSVHOSTOUTPUTALIAS - 仮想ホストUSEROUTPUTALIAS - ユーザFAILUSEROUTPUTALIAS - 不在ユーザです。

OUTPUTALIASには既知のバグがあります。 レポートはOUTPUTALIASが適用される前にソートされます。 これはもしSORTBYがアルファベットに設定されていれば、そのレポートは正しくソートされないことを意味します。


ALIASコマンドで正規表現を使うことができます。 残念ながら、もしまだ知らない人がいてもここで正規表現の使いかたを教えるつりはありません。: もしUnix上でならば、man perlreman regex あるいは man grep と打ってみて下さい。正規表現のたくさんの例題があります。 analogが使うのはPerl構文の正規表現です。 一般に、これらはUnix の egrep あるいは grep -E によって使われる拡張された正規表現のスーパーセットです。

"REGEXP:" をエイリアスの左前につけることによって、ALIAS コマンド中に正規表現を含むことができます。あるいは、"REGEXPI:" を使うことによって Unix の egrep -i のように大小文字の区別をしない一致検索を指定することができます。(もし、CASE INSENSITIVE と明記したら、ホスト名やファイル名のような多くの項目は自動的に大小文字を区別しなくなります。)

左括弧の順番に勘定して一番目、二番目等の括弧でくくられた左辺の表現を表すために、エイリアスの右辺では $1$2 等を使用できる。(ここでもまた、一重引用符でくくれば、$1$2 等をコマンド行に書くことができる。)

正規表現は、文字列の一部分が一致すれば一致したことになる。文字列全体に一致させたいときには、正規表現の両端を ^$ でくくらなければならない。

例えばリクエストレポートの場合には、

REQOUTPUTALIAS REGEXP:^(/~(.+?)/.*)$ "[$2] $1"
/~sret1/backgammon/rules.html
[sret1] /~sret1/backgammon/rules.html
に変換する。 または
HOSTALIAS REGEXP:^([^.]*)$ $1.mycompany.com
は、全てのピリオッドを含んでいないホスト名に .mycompany.com を付け加える。 (これが良い考えかどうかは FAQ の議論を見よ。)

正規表現は貪欲である:もし2種類の一致の仕方があるときには、左側の一致を可能な限り進めてゆく。


analogホームページ

Stephen Turner
2001年2月13日

analogについての質問はanalog-helpメーリングリストをお使い下さい

[ 先頭 | 上へ | 前へ | 次へ | 目次 | 索引 ]