jot

Print sequential or random data. Print out increasing, decreasing, random, or redundant data, usually numbers, one per line.

Syntax
      jot [-cnr] [-b word] [-w word] [-s string] [-p precision]
         [reps [begin [end [step-size-or-seed]]]]

Key
   -r           Generate random data instead of the default sequential data.

   -b word      Print word repetitively.

   -w word      Print word with the generated data appended to it.
                Octal, hexadecimal, exponential, ASCII, zero padded, and right-adjusted representations are
                possible by using the appropriate printf conversion specification inside word, in which case
                the data are inserted rather than appended.

   -c           This is an abbreviation for -w %c.

   -s string    Print data separated by string.  Normally, newlines separate data.

   -n           Do not print the final newline normally appended to the output.

   -p precision Print only as many digits or characters of the data as indicated by the integer precision.
                In the absence of -p, the precision is the greater of the precisions of begin and end.
                The -p option is overridden by whatever appears in a printf(3) conversion following -w.

The last four arguments indicate, respectively, reps the number of data, begin the lower bound, end the upper bound, and the step size or, for random data, the seed.

Defaults for the four arguments are, respectively, 100, 1, 100, and 1, except that when random data are requested, the seed, step-size-or-seed, is picked randomly. The reps argument is expected to be an unsigned integer, and if given as zero is taken to be infinite. The begin and end arguments may be given as real numbers or as characters representing the corresponding value in ASCII. The last argument must be a real number.

Random numbers are obtained through arc4random(3) when no seed is specified, and through random(3) when a seed is given. When jot is asked to generate random integers or characters with begin and end values in the range of the random number generator function and no format is specified with one of the -w, -b, or -p options, jot will arrange for all the values in the range to appear in the output with an equal
probability. In all other cases be careful to ensure that the output format's rounding or truncation will not skew the distribution of
output values in an unintended way.

Rounding and truncation

The jot utility uses double precision floating point arithmetic internally. Before printing a number, it is converted depending on the
output format used.

If no output format is specified or the output format is a floating point format (‘E’, ‘G’, ‘e’, ‘f’, or ‘g’), the value is rounded using
the printf function, taking into account the requested precision.

If the output format is an integer format (‘D’, ‘O’, ‘U’, ‘X’, ‘c’, ‘d’, ‘i’, ‘o’, ‘u’, or ‘x’), the value is converted to an integer value
by truncation.

As an illustration, consider the following command:

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

By requesting an explicit precision of 1, the values generated before rounding can be seen. The .5 values are rounded down if the integer
part is even, up otherwise.

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

By offsetting the values slightly, the values generated by the following command are always rounded down:

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

Another way of achieving the same result is to force truncation by specifying an integer format:

$ jot -w %d 6 1 10 0.5

Exit Status

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

The name jot derives in part from iota, a function in APL.

Examples

Print the integers from 1 to 10:

$ jot - 1 10

Print 21 evenly spaced numbers increasing from -1 to 1. :

$ jot 21 -1 1.00

Generate the ASCII character set :

$ jot -c 128 0

Display the strings xaa through xaz :

$ jot -w xa%c 26 a

Print 20 random 8-letter strings:

$ jot -r -c 160 a z | rs -g 0 8

Print Infinitely many yes's:

$ jot -b yes 0

Print thirty ed(1) substitution commands applying to lines 2, 7, 12, etc :

$ jot -w %ds/old/new/ 30 2 - 5

Print a stuttering sequence 9, 9, 8, 8, 7, etc. by truncating the output precision and a suitable choice of step size:

$ jot -w %d - 9.5 0 -.5

Create a file containing exactly 1024 bytes :

$ jot -b x 512 > block

Set tabs four spaces apart starting from column 10 and ending in column 132:

$ expand -`jot -s, - 10 132 4`

Print 21 evenly spaced numbers increasing from -1 to 1. :

$ jot 21 -1 1.00

Print all lines 80 characters or longer:

$ grep `jot -s "" -b . 80`

“Sir, the people Must have their voices; neither will they bate One jot of ceremony” ~ Shakespeare (Sicinius/Coriolanus)

Related macOS commands

Local man page: jot - Command line help page on your local machine.
expand - Expand tabs to spaces, and vice versa.
false - Do nothing, unsuccessfully.
sed - Stream Editor.
select - Generate a list of items (bash).


 
Copyright © 1999-2026 SS64.com
Some rights reserved