UNIX/Linuxの部屋 seqコマンドの使い方


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド seq 連番・数列を生成するコマンド

seq コマンドとは、連番・数列を生成し、出力するコマンドである。

引数ひとつパターン
引数にひとつの数字を指定した場合、1 からその数字までの連番を出力する。
% seq 5
1
2
3
4
5

引数ふたつパターン
引数にふたつの数字を指定した場合、初期値と最終値として出力する。
% seq 7 11
7
8
9
10
11

引数3つパターン
引数に3つの数字を指定した場合、開始値・増分・最終値とみなす。
% seq 5 2 11
5
7
9
11
→ 5から始め、2ずつ増加し、11になったら終了。

小数・減少・マイナス
開始値・増分・最終値いずれも、小数を指定することができる。
% seq 1.3 0.75 3.56
1.30
2.05
2.80
3.55

間隔にマイナス値を指定することで、減少させることができる。
% seq 3 -1 0
3
2
1
0

開始値や終了値にマイナス値を指定することもできる。
% seq -6 4 8
-6
-2
2
6

seq コマンドのオプション
-w オプションを指定すると、同じ文字数になるようゼロパディングがなされる。
% seq -w 1 100
001
002
(略)
099
100

-s オプションで区切り文字を変更できる。
% seq -s, 1 5
1,2,3,4,5
→ カンマ区切りに
% seq -s", " 1 5
1, 2, 3, 4, 5
→ 「カンマ+空白」区切りに

-f オプションで数値フォーマットを柔軟に設定することができる。printf(3) のような書き方ができるので、かなり強力。
% seq -f'%.2f' 9 12
9.00
10.00
11.00
12.00
→ 小数点以下2桁
% seq -f'%5.2f' 9 12
 9.00
10.00
11.00
12.00
→ 小数点以下2桁かつ全体を5桁右揃え
% seq -f'%07.2f' 9 12
0009.00
0010.00
0011.00
0012.00
→ 小数点以下2桁かつ全体を7桁ゼロパディング
% seq -f'%+.0f' -5 2 5
-5
-3
-1
+1
+3
→ 符号を必ずつける
% seq -f'"%05.2f"' -s", " 3 7
"03.00", "04.00", "05.00", "06.00", "07.00"
→ ダブルクォートで囲み、カンマ区切りとする
% seq -f'192.168.0.%.0f' 1 127
192.168.0.1
192.168.0.2
(略)
192.168.0.126
192.168.0.127
→ IPアドレスの連番を生成

-f オプションで頑張るとわかりづらくなるので、下記のようにループさせる方がよいかもしれない。
% for i in `seq 1 127`; do echo "192.168.0.$i"; done
192.168.0.1
192.168.0.2
(略)
192.168.0.126
192.168.0.127

seq コマンド は GNU の coreutils に含まれており、Linux 系 OS ではおおむね使うことができるだろう。

FreeBSD や macOS などの *BSD 系では seq コマンドの代わりに jot コマンドを使うのが一般的であるものの、FreeBSD 9.0 以降・NetBSD 3.0 以降で seq コマンドを使うことができる。

*BSD・macOS・SysetmV 系 OS に coreutils をインストールした場合、gseq などの名前でインストールされてしまうかもしれない。
>> Linuxオンラインマニュアル(man) Linux seq(1)
>> FreeBSDオンラインマニュアル(man) FreeBSD seq(1)


頑張って書いたおすすめコンテンツ!
クラウドサービス徹底比較・徹底解説