長南洋一
cyoic****@maple*****
2013年 9月 14日 (土) 08:46:13 JST
長南です。 7.1 `sort' `-R' `--random-sort' `--sort=random' Sort by hashing the input keys and then sorting the hash values. Choose the hash function at random, ensuring that it is free of collisions so that differing keys have differing hash values. This is like a random permutation of the inputs (*note shuf invocation::), except that keys with the same value sort together. ソートを行うのに、入力中のキーをハッシュしてから、そのハッシュ値 をソートするという方法を用いる。ハッシュ関数はランダムに選んで、 衝突 (collision) が絶対起きないようにする。その結果、値の違うキーは 必ず違うハッシュ値を持つようになる。これは、入力のランダムな並び 替えに似ているが (*note shuf invocation::)、同じ値を持つキーは 一緒に並べるという点が、異なっている。 If multiple random sort fields are specified, the same random hash function is used for all fields. To use different random hash functions for different fields, you can invoke `sort' more than once. ランダムソートをするフィールドが複数指定されている場合は、ランダム に選ばれた同じハッシュ関数が、すべてのフィールドで使用される。 フィールドごとに別のランダムなハッシュ関数を使うようにするには、 `sort' を複数回呼び出せばよい。 言っていることがさっぱりわからないまま訳しています。翻訳は意味が通って いるでしょうか。 `--batch-size=NMERGE' Merge at most NMERGE inputs at once. When `sort' has to merge more than NMERGE inputs, it merges them in groups of NMERGE, saving the result in a temporary file, which is then used as an input in a subsequent merge. 一度にマージする入力ファイルの数を多くても NMERGE 個までとする。 NMERGE 個以上の入力ファイルをマージしなければならない場合、`sort' は NMERGE 個のファイルからなるグループを作ってマージし、その結果を テンポラリ・ファイルに保存する。そして、今度はそれを入力として使用 して、後に続くマージを行うのである。 sort の新しい man page では、「一度に最大 NMERGE 行、併合を行う」と 訳されていますが、すぐ後に「(NMERGE の) デフォルトの値は 16 だが」と あり、また src/sort.c には、こう書いてあります。 /* During the merge phase, the number of files to merge at once. */ #define NMERGE_DEFAULT 16 ですから、NMERGE inputs は NMERGE 行の入力ではなく、NMERGE 個の入力 ファイルでしょう。そこまで大丈夫だと思うのですが、それ以後の解釈は 正しいかどうか自信なしです。 `-s' `--stable' Make `sort' stable by disabling its last-resort comparison. This option has no effect if no fields or global ordering options other than `--reverse' (`-r') are specified. 最後の手段の比較 (last-resort comparison) を行うのを止めて、`sort' を現状維持指向 (stable) にする。このオプションは、フィールド指定 オプションや、`--reverse' (`-r') 以外のグローバルな順序関係のオプ ションが指定されていなければ、効果を持たない。(訳注: ここで言う 現状維持指向 (stable) というのは、次のようなことである。たとえば、 `-b' オプションを使って、先行する空白を無視して比較した場合に、 等価となる行があったとしよう。通常では、それでも、最後の手段の比較 によって、先行する空白の有無も考慮に入れた行全体の比較が行われ、 等価な行に順序を付けることになるが、`--stable' オプションが指定 されていると、それをしないので、等価な行は入力されたときの順序で 出力される)。 stable をどう訳すかです。「入力順尊重、順序維持指向」なんてのも 考えました。何がよいでしょう。stable (安定した) の意味がいくらかでも 残るようにと、「現状維持指向」を選んだのですが。 `--parallel=N' ... Note also that using N threads increases the memory usage by a factor of log N. N 個のスレッドを使用すると、メモリの使用量が log N を係数として 増加することにも、注意していただきたい。 "a factor of log N" は「log N を係数として」でよいでしょうか。 こういうときの用語を知らないので。 7.4 `comm' Forcing `comm' to process wrongly sorted input files containing unpairable lines by specifying `--nocheck-order' is not guaranteed to produce any particular output. The output will probably not correspond with whatever you hoped it would be. 入力ファイルがきちんとソートされていず、しかも、対にならない行を 含む場合に、`--nocheck-order' を指定して、そうしたファイルを `comm' で 無理矢理処理しても、何か特定の結果をもたらすことは保証できない。おそらく 出力は、期待に添わないものになるだろう。 "is not guaranteed to produce any particular output." の particular を どう訳したらよいのか。「他の場合とは区別される出力」つまり「何らかの 意味のある出力」ということなんでしょうが、「何か意味のある結果」とか 「有意の結果」と言ってしまって、よいものかどうか。上の訳で意味が通じれば、 それでよいのですが。 8.3 `join' `-e STRING' Replace those output fields that are missing in the Input with STRING. I.e., missing fields specified with the `-12jo' options. 入力では欠けているフィールドを、出力では STRING で補う。すなわち、 オプション `-1', `-2', `-j', `-o' などを指定したときに、欠けている フィールドがそれに当たる (訳注: たとえば、共通フィールドと区切り 文字しかない行に対して、出力ではその行の空っぽのフィールドの位置に STRING という文字列が入るということ)。 "specified with the `-12jo' options" と言っているのが、よくわかりません。 とくに '-12j' についてそうです。"join -e "emp" ccc.txt ddd.txt" という ような -1, -2, -j がない形でも、両ファイルに共通フィールドが存在すれば、 missing fields に "emp" が入りますから。 -- 長南洋一