本日のシェル芸勉強会(http://usptomo.doorkeeper.jp/events/8339)の中でプチ話題になったjotコマンド。
イマイチ使い方をちゃんと把握していなかったので調べてみました。※確認・検証はFreeBSD 8.3にておこなっておりまする。
当時の認識>jot 回数 開始 終端 #シェル芸 #usptomo— くんすと (@kunst1080) 2014, 2月 15調べてみた結果、かなり便利なコマンドのようです。seq + yesみたいな感じかな。

man jot

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
JOT(1)                  FreeBSD General Commands Manual                 JOT(1)

NAME
     jot ? print sequential or random data

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

DESCRIPTION
     The jot utility is used to print out increasing, decreasing, random, or
     redundant data, usually numbers, one per line.

以下略!

基本的な構文

1
2
jot 回数 開始 終了

で、開始と終了は省略可能。

  • 回数のみ指定
1
2
3
4
5
6
7
% jot 5
1
2
3
4
5

  • 回数と開始を指定
1
2
3
4
5
6
7
% jot 5 10
10
11
12
13
14

  • 回数・開始・終了を指定
1
2
3
4
5
6
7
% jot 5 6 10
6
7
8
9
10

  • 回数・開始・終了が連続しない場合、回数に合わせて割り算してくれる感じ。
1
2
3
4
5
6
7
% jot 5 2 10
2
4
6
8
10

  • 回数に0を指定すると無限に出力(yesみたくなる)
1
2
3
4
5
6
7
8
% jot 0 | head
1
2
3
4
5
6

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
% jot -b a 0 | head
a
a
a
a
a
a
a
a
a
a

jotコマンドのオプション

-rオプション

  • 乱数を作成
1
2
3
4
5
% jot -r 3
80
8
97

  • 1000~2000の間の乱数を3つ
1
2
3
4
5
% jot -r 3 1000 2000
1235
1172
1404

-bオプション

文字を繰り返し出力

1
2
3
4
5
% jot -b PIZA 3
PIZA
PIZA
PIZA

-wオプション

  • printf風のフォーマット指定を付けられる
1
2
3
4
5
% jot -w %03d 3
001
002
003

-wオプション

  • -w %c と同じ。生成された数字をアスキーコードとして文字を出力する
1
2
3
4
5
% jot -c 3 65 67
A
B
C

-sオプション

  • 区切り文字を変更する。指定しない場合は改行コード。
1
2
3
% jot -s , 10
1,2,3,4,5,6,7,8,9,10

  • 他のオプションと組み合わせ
1
2
3
% jot -s , -w %03d 10
001,002,003,004,005,006,007,008,009,010

-nオプション

改行コードを出力しない

1
2
3
4
5
% jot -n 3
1
2
3%

1
2
3
% jot -n -s , 3
1,2,3%

-pオプション

整数で指定されたデータの文字数もしくは桁数だけ表示

  • 出力対象が数字の場合
1
2
3
4
5
6
% jot -p 2 4 8 11
8.00
9.00
10.00
11.00

  • -wオプションと組み合わせた場合、-wが勝つ
1
2
3
4
5
% jot -p 2 -w %03d 3
001
002
003

その他

  • 開始・終了等は、文字でも指定可能
1
2
3
4
5
% jot 3 a c
97
98
99

1
2
3
4
5
% jot -c 3 a c
a
b
c

  • ランダムな文字列を生成
1
2
3
4
5
6
7
% jot -r -c 40 a z | rs -g 0 8
mnuqpxzx
ortfkjnd
xjllnkpj
zjghdayl
qpzjihai

参考URL

ここの「使用例」がすごく参考になります。