strfile(8) 文字列を格納するためのランダムアクセスファイルを作成する

Other Alias

unstr

書式

[-iorsx ] [-c char ] source_file [output_file ] unstr source_file

解説

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

関連ファイル

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

歴史

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