JOT(1)

名称
jot - 連続ないしは、乱数データを出力する

書式
jot [-cnr] [-b word] [-w word] [-s string] [-p precision] [reps [begin [end [s]]]]

解説
jot ユーティリティは、 増加・減少・ランダム・冗長データを通常は数字で、一行毎に出力します。

以下のようなオプションが利用できます。

-r  デフォルトの連続したデータの代わりに、乱数を作成します。

-b word
    word を、繰り返し出力するだけです。

-w word
    word のあとに、生成されたデータを付け加え、出力します。 8 進・16 進・指数・ASCII・0 で埋めた表示・右詰め表現などは、適切な printf(3) 記法を word 中で指定することで、可能です。この場合、データは追加されるというよりも、 挿入されると考えてください。

-c  これは、 -w %c の省略形です。

-s string
    string で分けられたデータを出力します。 普通は、改行文字がデータを分割します。

-n  通常追加される、最後の改行を出力しません。

-p precision
    整数 precision で指定されたデータの文字数もしくは桁数だけ表示します。 -p がない場合、精度値は begin と end の引数の精度の大きい方です。 -p オプションは、 -w に続く printf(3) 記法が指定されている時には、上書きされます。

最後の 4 つの引数はそれぞれデータ数・下界・上界と、幅の大きさまたは、乱数のため の種です。 少なくともどれか一つが指定されなければなりませんが、その他の 3 つは引数として - を与えると、省略できます。 これら 3 つの引数を指定すれば、4 つ目が決まります。 4 つとも指定されて、 reps の与えられた値と、計算された値とが相反する場合、小さい方を用います。 指定された数が 3 つより少ない場合には、 s を除いて、 デフォルト値を左から右へ割り当てます。 s は、 begin と end が共に指定された場合以外、デフォルト値が設定されます。

4 つの引数に対するデフォルトは、乱数が要求された時を除いて、 それぞれ、100, 1, 100, 1です。 乱数の種 s はランダムに選択されます。 reps 引数は、符号無し整数であると想定されています。 0 が与えられた場合は、無限回数となります。 begin と end は、実数、もしくは文字の場合は対応する ASCII 値としてあたえられます。 最後の引数は、実数でなければなりません。

乱数値は、 random(3) を使って得られます。 名前 jot は、 APL 中の関数 iota の部分から来ています。

使用例
コマンド
    jot 21 -1 1.00

は、-1 から 1 へ増加する等間隔の数字を 21 個出力します。 ASCII 文字集合は、以下のようにします。
    jot -c 128 0

xaa から xaz までの文字列は以下のようにします。
    jot -w xa%c 26 a

20 個のランダムな 8 文字は以下のようにして作成します。
    jot -r -c 160 a z | rs -g 0 8

無限に、 yes を出したい場合は、以下のようにします。
    jot -b yes 0

ed(1) の置換コマンドを、30 回、2, 7, 12 行等のように (5 行毎に ) 適用する場合の 解答例は以下のようになります。
    jot -w %ds/old/new/ 30 2 - 5

だぶりのある 9, 9, 8, 8, 7 の様な列は、 以下のように適切にステップの大きさを設定することで、実現できます。
    jot - 9 0 -.5

ファイルが正確に 1024 バイトであるように作成するには、
    jot -b x 512 > block

最後に、タブを 4 つのスペースに設定し、10 カラム目からはじまって、 132 カラム目で終るようにするには、以下のようにします。
    expand -`jot -s, - 10 132 4`

80 文字以上の行を全て表示するには、以下を使ってください。
    grep `jot -s "" -b. 80`

診断
次の診断メッセージは、特別な解説を要します:

illegal or unsupported format '%s' printf(3) 用に要求された変換書式指示子は、
    %[#][ ][{+,-}][0-9]*[.[0-9]*]?
の書式ではありませんでした。 ここで “”? は
    [l]{d,i,o,u,x}
または
    {c,e,f,g,D,E,G,O,U,X}
のいずれかひとつです。

range error in conversion 表示すべき値は、要求された出力書式に関連付けられたデータタイプの 範囲外の結果になりました。

too many conversions 1 個しか許されないところを、複数の変換書式指示子が指定されました。

関連項目
ed(1), expand(1), rs(1), yes(1), printf(3), random(3)