Dfreq [ options ] [ -g group-by-key-field-list ] key-field-list [ input-file.. ]
Dfreq は,key-field-listで指定されたフィールドの 値の頻度レコードを出力する。 出力レコードは,key-field-list に指定されたフィールドと, 規定フィールド名"count"フィールドを持っている。 このキーフィールドの値は,出力中一意で, "count"フィールドは,その値を持ったDレコード数を示す。 出力レコード順は,key-field-listで指定される キー値の順となる。 これは,Dsort での順と等しい。
出力レコード中のキーフィールドの値は, キーフラグによって次のように変更される。 fフラグは,アルファベット小文字を大文字にする。 nフラグは,値を正規化された数値形式にする。 dフラグは区切り字を除去する。 iフラグは非印字文字を除去する。 出力レコード中のキーフィールドの順は, key-field-listに従い, 入力レコード中の順は保存しない。
オプション-pを指定すると, 出力レコードには"percent"フィールドが付加される。
通常では,欠値(この場合,キーフィールドが一つもないとき) は,入力レコードにカウントしない。 しかし,オプション-mを指定すると,欠値の場合も 入力レコードにカウントされる。 欠値に対する出力レコードでは,キーフィールドは存在せず, "count"フィールド(および指定があれば"percent"フィールド)のみ存在する。
2つい上の入力ファイルがある場合, Dfreq はそれらを連続した一つのファイルのように扱う。 しかし,オプション-Fが指定されると, Dfreqは,頻度レコードを, 各入力ファイルの終わりごとに出力する。 この場合,各出力レコードに"filename"フィールドを付加する。
オプション -g group-by-key-field-list が指定されると, Dfreq は,このキーフィールドの値が変わる (グループ化キーフィールドの値が直前のレコードと異なる) ごと,または各入力ファイルの終わりごとに頻度レコードを出力する。 通常このオプションは,group-by-key-field-listでファイルを Dsortした後で使うが, 必須というわけではない。 グループ処理の場合,"percent"フィールド(もしあれば) は,同一キー値のグループ内のレコード数に基づいて計算される。
次の2つのコマンド
Dfreq -g a b
Dfreq a,b
は,実際上"percent"フィールドをのぞいて同じ結果を出力する。 (前者は各グループごとに100%であるが,後者は入力全体が100%)。 この2つの実際的な違いは,メモリー使用量である。 前者の方が少ないメモリーで実行できる。 なぜなら, Dfreq は,頻度レコードを出力するまでの間すべてのキー値をメモリー上に 保持しているからである。 グループ処理の場合, Dfreq は,グループ化キー値が替わるごとに頻度レコードを出力する。 これに対し通常の処理では,すべての入力ファイルを読んだ後に 頻度レコードを出力する。 したがって,グループ処理のオプションは非常に大きな入力ファイル を処理する場合や,キーフィールドが非常に多種の値を含んでいるような場合 有効である。
各出力レコードは,次のフィールドをこの順に持つ。
マニュアル D_msg参照。
MIYAZAWA Akira