linuxで連番を生成するにはseqコマンドが便利


このエントリーをはてなブックマークに追加

linuxのシェルコマンドであるseqを使うと簡単に連番を生成できることを知りました。

まずは5から12までの連番を作ってみます。

$ seq 5 12

のように、最初の数字と最後の数字をそれぞれ指定すると、以下のように表示されます。

5
6
7
8
9
10
11
12

次に、5から12まで、3おきの連番を作ってみます。以下のように3つの引数を指定すると、

$ seq 5 3 12

以下のように表示されます。12を超えない最小の数である11までの連番が生成されています。

5
8
11

先頭を0埋めした固定長の連番を生成するには、-fオプションを使ってフォーマットを指定します。例えば5桁の連番を作りたい場合、

$ seq -f "%05g" 5 3 12

とすると

00005
00008
00011

と表示されます。

-wオプションを使っても、先頭を0埋めした固定長の連番を生成できます。この場合の桁数は、連番を表現する必要最小の桁数になります。

$ seq -w 5 3 12
05
08
11

seqを使わない方法

(2020-03-01追記) bashzshだと、seqコマンドの代わりに以下のようにしても連番を生成できます。

$ echo {5..12}
5 6 7 8 9 10 11 12
$ echo {5..12..3}
5 8 11
$ echo {00005..00012..3}
00005 00008 00011

参考

numbers - How to zero pad a sequence of integers in bash so that all have the same width? - Stack Overflow