seqコマンド

数値の連続を出力します。

概要

seqコマンドは、開始点から終了点までの数値の連続を生成します。オプションで増分を指定することもできます。シェルスクリプトでループの作成、テストデータの生成、番号付きリストの作成などによく使用されます。

オプション

-f, --format=FORMAT

printf形式の浮動小数点FORMATを使用します

$ seq -f "Number: %.2f" 1 3
Number: 1.00
Number: 2.00
Number: 3.00

-s, --separator=STRING

数値の区切りにSTRINGを使用します(デフォルトは改行)

$ seq -s ", " 1 5
1, 2, 3, 4, 5

-w, --equal-width

先頭にゼロを埋めて幅を均等にします

$ seq -w 8 12
08
09
10
11
12

-t, --format-separator=SEPARATOR

出力の区切り文字としてSEPARATORを使用します(デフォルト: \n)

$ seq -t "," 1 3
1,2,3,

使用例

基本的な連続生成

$ seq 5
1
2
3
4
5

開始、増分、終了の指定

$ seq 2 2 10
2
4
6
8
10

カンマ区切りリストの作成

$ seq -s, 1 5
1,2,3,4,5

forループでのseqの使用

$ for i in $(seq 1 3); do echo "Processing item $i"; done
Processing item 1
Processing item 2
Processing item 3

ヒント:

カウントダウンにseqを使用する

降順の連続を生成するには、負の増分を指定します:

$ seq 5 -1 1
5
4
3
2
1

並列処理のためにxargsと組み合わせる

seqとxargsを使用して複数の並列プロセスを実行します:

$ seq 1 10 | xargs -P4 -I{} echo "Processing job {}"

フォーマットされた連続を作成する

より複雑なフォーマットには、printfと組み合わせます:

$ seq 1 3 | xargs -I{} printf "Item %03d\n" {}
Item 001
Item 002
Item 003

よくある質問

Q1. 小数点を含む連続を生成するにはどうすればよいですか?

A. -fオプションを浮動小数点フォーマットで使用します: seq -f "%.1f" 1 0.5 3は1.0、1.5、2.0、2.5、3.0を生成します。

Q2. 先頭にゼロを付けた連続を作成するにはどうすればよいですか?

A. -wオプションを使用します: seq -w 1 10は数値に先頭ゼロを埋めて等幅にします。

Q3. IPアドレスの範囲を作成するためにseqを使用するにはどうすればよいですか?

A. seqを他のコマンドと組み合わせることができます: for i in $(seq 1 5); do echo "192.168.1.$i"; done

Q4. seqは大きな数値を扱えますか?

A. はい、seqはシステムの数値制限内で大きな整数を扱うことができます。

参考文献

https://www.gnu.org/software/coreutils/manual/html_node/seq-invocation.html

改訂履歴