S-JIS[2015-04-04] 変更履歴

seq 〔オプション〕 開始値 〔増減値〕 終了値

連番を生成するUNIXコマンド


基本的な使用例

コマンド例 seq 5 seq 2 5 seq 1 10 seq 1 2 10 seq 10 -1 1 seq 20150401 20150405
備考 1〜5 2〜5 1〜10 2ずつ増加 1ずつ減少 日付のような値
実行結果 1
2
3
4
5
2
3
4
5
1
2
3
4
5
6
7
8
9
10
1
3
5
7
9
10
9
8
7
6
5
4
3
2
1
20150401
20150402
20150403
20150404
20150405

自動0埋め(幅の統一)

デフォルトでは、生成される桁は統一されない(0埋めされない・桁数が揃わない)。
-wオプションを使うと、桁数が最大幅に合うよう自動的に0埋めされる。

コマンド例 seq 1 5 seq -w 1 5 seq 1 10 seq -w 1 10
実行結果 1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
6
7
8
9
10
01
02
03
04
05
06
07
08
09
10

書式指定

-fオプションを使うと、C言語のprintf形式の書式が使える。
ただし浮動小数点扱いなので、%dは使えず、%fを使う。デフォルトは%g。

コマンド例 seq -f'%02d' 1 5 seq -f'%02f' 1 5 seq -f'%02.f' 1 5 seq -f'201504%02.f' 1 5
実行結果 seq: FORMAT `%02d' に不明な %d 指定があります 1.000000
2.000000
3.000000
4.000000
5.000000
01
02
03
04
05
20150401
20150402
20150403
20150404
20150405

区切り文字の指定

デフォルトでは、生成された数値が1行ずつ出力される。つまり、区切り文字は改行(\n相当)。
-sオプションを使うと、区切り文字を指定できる。

コマンド例 seq -s' ' 1 5 seq -s'\t' 1 5
備考 空白区切り エスケープ機能は無いっぽい
実行結果 1 2 3 4 5 1\t2\t3\t4\t5

応用例

for文で使う例

for DATE in $(seq -f'201504%02.f' 1 5)
do
  echo date=$DATE
done

↓実行結果

date=20150401
date=20150402
date=20150403
date=20150404
date=20150405

UNIXコマンドへ戻る
メールの送信先:ひしだま