ここのところ、個人的にseqコマンドを多様することが多くなったので、あとで見返すために色々と使い方を残しておきたいなというのがあるので備忘として残しておく。

1. 基本的な使い方

基本的には、以下のようにして連続した数字を出力させることができる。 マイナスや少数の数字も指定できる。

seq x # 1~xまでの数字を各行に出力する
seq y x # y~xまでの数字を各行に出力する
seq y n x # y~xまでの数字をnごとに各行に出力する
blacknon@BS-PUB-DEVELOP:~$ seq 5
1
2
3
4
5
blacknon@BS-PUB-DEVELOP:~$ seq 3 5
3
4
5
blacknon@BS-PUB-DEVELOP:~$ seq 30 5 50
30
35
40
45
50
blacknon@BS-PUB-DEVELOP:~$ seq -1 0.1 1
-1.0
-0.9
-0.8
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0

ちなみに、無限に数字を出力させたい場合は「inf」を指定することで可能。

seq inf

2. 出力フォーマットを指定する

seqでは、GNU拡張されたコマンドかどうかで多少違いがあるが、-f オプションで出力フォーマット(どこに数字を差し込むかなど)を指定することができる。 以下の例では、%gで整数を指定している。

blacknon@BS-PUB-DEVELOP:~$ seq -f "test_%g" 10
test_1
test_2
test_3
test_4
test_5
test_6
test_7
test_8
test_9
test_10

指定できる数字の種類は、以下の様になっている。 基本は、%g(整数)、%f(小数)だけ覚えておけばいいだろう。

  • %g
  • %G
  • %f
  • %F
  • %a
  • %A
  • %e
  • %E

ちなみに、printfと同じようにフラグを付与して桁数等を調整する事ができる。

blacknon@BS-PUB-DEVELOP:~$ seq -f "%03g" 1 5
001
002
003
004
005
blacknon@BS-PUB-DEVELOP:~$ # 3桁のスペース埋め
blacknon@BS-PUB-DEVELOP:~$ seq -f "%3g" 1 5
  1
  2
  3
  4
  5

seq独自の機能というわけではないが、formatを利用して実行したいコマンドを生成、bashに食わすといった利用方法もある。

blacknon@BS-PUB-DEVELOP:~$ seq -f "echo %g" 1 5
echo 1
echo 2
echo 3
echo 4
echo 5
blacknon@BS-PUB-DEVELOP:~$ seq -f "echo %g" 1 5|bash
1
2
3
4
5

3.ゼロ埋めして出力させる

formatでも指定できるが、ただ桁数に合わせてゼロ埋めするのであれば-wオプションを付与すればいい。

blacknon@BS-PUB-DEVELOP:~$ seq -w 0 10 100
000
010
020
030
040
050
060
070
080
090
100

4.区切り文字を変更する

デフォルトの出力区切り文字は改行になっているが、-sオプションでこれを変更できる。

blacknon@BS-PUB-DEVELOP:~$ seq -s x 10
1x2x3x4x5x6x7x8x9x10