STRFILE(8)

名称
strfile, unstr - 文字列を格納するためのランダムアクセスファイルを作成する

書式
strfile [-iorsx] [-c char] source_file [output_file] unstr source_file

解説
strfile は 1 つのパーセント記号 ‘%’ から成る行で区切られる行グループから成るファイルを読み込み、 ヘッダ構造と各々の行グループのファイルオフセットを含む データファイルを作成します。 このファイルによって文字列のランダムアクセスが可能となります。

出力ファイルは、それがコマンド行において指定されていない場合、 source_file.dat というファイル名になります。

指定できるオプションとして、次のものがあります。

-C  ファイルにコメントが含まれることを示すフラグです。 本オプションは、ヘッダの str_flags フィールドの STR_COMMENTS ビットをセットさせます。 コメントは、行頭の 2 つの区切り文字で指示されますが、 strfile はコメント行に対して特別な処理を行いません。

-c char
    区切り文字をパーセント記号から char に変更します。

-i  文字列の並び換えを行なう際に、大文字・小文字を区別しません。

-o  文字列をアルファベット順に並び換えます。 オフセットテーブルは参照される行グループのアルファベット順に ソートされます。 文字列の頭のアルファベットと数字以外の文字は無視されます。 このオプションを指定すると、ヘッダ中の str_flags フィールドの STR_ORDERED ビットがセットされます。

-r  文字列へのアクセスをランダム化します。 オフセットテーブル中のエントリはランダムに並び換えられます。 このオプションを指定すると、ヘッダ中の str_flags フィールドの STR_RANDOM ビットがセットされます。

-s  なにも表示せずに実行します。終了時にサマリのメッセージを表示しません。

-x  行グループ中の各アルファベット文字を単純シーザー暗号 (simple caesar cypher) における 13 ポジションだけローテートします。 このオプションを指定すると、ヘッダ中の str_flags フィールドの STR_ROTATED ビットがセットされます。

ヘッダのフォーマットは以下のとおりです。

    #define	VERSION	1
    unsigned long	str_version;	/* バージョン番号 */
    unsigned long	str_numstr;	/* ファイル中の文字列の数 */
    unsigned long	str_longlen;	/* 最長文字列の長さ */
    unsigned long	str_shortlen;	/* 最短文字列の長さ */
    #define	STR_RANDOM	0x1	/* ランダムフラグの位置 */
    #define	STR_ORDERED	0x2	/* 並び換えフラグの位置 */
    #define	STR_ROTATED	0x4	/* rot-13されたテキスト */
    unsigned long	str_flags;	/* フラグビットフィールド */
    char str_delim;			/* 区切り文字 */

全てのフィールドはネットワークバイトオーダで書かれます。

unstr は strfile で行なったことを元に戻すためのものです。 source_file 中に含まれる文字列を source_file.dat ファイルのヘッダにリストされた順で標準出力に表示します。 -o を使って strfile を実行した後、 unstr を使ってそれをテーブルの順にダンプすることによって、 入力ファイルのソートされたバージョンを作成することが可能です。

関連項目
byteorder(3), fortune(6)

関連ファイル
strfile.dat
    デフォルトの出力ファイル。

歴史
strfile ユーティリティは 4.4BSD から登場しました。