EN JA
JOT(1)
JOT(1) FreeBSD General Commands Manual 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 がない場合、精度値は、 beginend の引数の精度の大きい方です。 -p オプションは、 -w に続く printf(3) 記法が指定されている時には、上書きされます。

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

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

乱数は、シード (種) が指定されないとき、 arc4random(3) を通して取得し、シードが与えられるとき、 random(3) を通して取得します。 jot が、乱数発生器関数の範囲の始めと終わりの値でランダムな整数または文字を生成するために問合わされ、 -w, -b または -p オプションの 1 つで書式が指定されないとき、 jot は、等しい確率で出力に現れるように範囲内のすべての値を整えます。他のすべての場合には、出力形式の丸めと切捨てが故意でない方法で出力値の配布を歪曲しないことを保証することに注意してください。

名前 jot は、 APL 中の関数 iota の部分から来ています。

丸めと切捨て

jot ユーティリティは、内部的に倍精度浮動小数点演算を使用します。数値を印刷する前に、使用される出力形式に応じて変換されます。

出力形式が指定されないか、または出力形式が浮動小数点形式 (‘E’, ‘G’, ‘e’, ‘f’または‘g’) であるなら、値は、要求された精度を考慮して、 printf(3) 関数を使用して丸められます。

出力形式が整数形式 (‘D’, ‘O’, ‘U’, ‘X’, ‘c’, ‘d’, ‘i’, ‘o’, ‘u’または‘x’) であるなら、値は、切捨てることによって整数値に変換されます。

実例として、次のコマンドを検討します:

$ jot 6 1 10 0.5 
1 
2 
2 
2 
3 
4

明白な 1 の精度を要求することによって、丸めるの前に生成される値を、見ることができます。整数部が偶数であるなら、.5 の値は、切り下げられ、そうでなければ、切り上げれます。

$ jot -p 1 6 1 10 0.5 
1.0 
1.5 
2.0 
2.5 
3.0 
3.5

値をわずかに補正することによって、次のコマンドによって生成される値は、常に切り下げられます:

$ jot -p 0 6 .9999999999 10 0.5 
1 
1 
2 
2 
3 
3

同じ結果を得る別の方法は、整数形式を指定することによって強制的に切り捨てることです:

$ jot -w %d 6 1 10 0.5

終了ステータス

The jot utility exits 0 on success, and >0 if an error occurs.

使用例

コマンド
jot - 1 10

は、1 から 10 までの整数を印刷します、一方、コマンド

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 -w %d - 9.5 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 個しか許されないところを、複数の変換書式指示子が指定されました。

歴史

jot ユーティリティは、 4.2BSD ではじめて登場しました。
June 2, 2010 FreeBSD