はじめに
こんにちは!今回はseqコマンドについて解説します。
seqは連続した数字を出力するコマンドです。スクリプトでループを使う時とか、連番ファイルを作る時とか、めっちゃ便利ですよ。
「シーケンス」の略で、「1から100まで出力してほしい」みたいな数字の列を簡単に作れます。
seqコマンドとは
seqは、指定された範囲の数字を順番に出力する外部コマンドです。
シンプルですが、シェルスクリプトでのループや、テスト用のデータ生成に活躍します。開始値、終了値、増分を指定できるので、柔軟に数字の列を作れるんです。
基本構文
|
|
開始値と増分は省略できます。省略した場合は開始値が1、増分が1になります。
主なオプション
| オプション | 説明 |
|---|---|
-f FORMAT |
出力形式を指定(printf形式) |
-s SEP |
区切り文字を指定(デフォルトは改行) |
-w |
桁数を揃える(ゼロパディング) |
使用例
例1: 1から10までを出力
|
|
実行結果:
|
|
最もシンプルな使い方。終了値だけを指定すると、1から指定値まで出力されます。
例2: 指定範囲を出力
|
|
実行結果:
|
|
開始値と終了値を両方指定できます。この場合は5から15までが出力されます。
例3: 増分を指定して出力
|
|
実行結果:
|
|
0から30まで、5ずつ増やします。偶数だけ出力したい時や、10ずつのステップが欲しい時に便利ですね。
例4: 逆順を出力
|
|
実行結果:
|
|
増分にマイナスを指定すると逆順になります。カウントダウンが必要な時に使えます。
例5: 桁数を揃える(ゼロパディング)
|
|
実行結果:
|
|
-wオプションで出力の桁数を自動調整。ファイル名に連番を付ける時に便利です。
例6: カンマ区切りで出力
|
|
実行結果:
|
|
-sオプションで区切り文字を指定。改行の代わりにカンマで区切られます。
例7: 小数点で増分
|
|
実行結果:
|
|
小数点での増分も対応しています。温度や確率などの計算に活躍。
例8: printf形式でフォーマット
|
|
実行結果:
|
|
-fオプションでprintf形式を指定。テキストを加えた出力ができます。
例9: ファイル名を連番で作成(シェルスクリプト内で使用)
|
|
seqの出力をループで使う典型的な例。file_1.txtからfile_5.txtまで作られます。
例10: テスト用データの生成
|
|
1から100を足し算で合計を出す例。シェルスクリプトとの組み合わせで色々できます。
Tips・注意点
シェルスクリプトでのループに最適
|
|
seqの出力をループで回すのは、スクリプトで何度も処理をしたい時の基本パターンです。
{1..10}との違い
|
|
Bash 3.0以降は{1..10}という表記も使えます。ただし、増分が指定できないのでseqはまだ必要です。
パイプの右側で出力の列を作る時に便利
|
|
seqの出力を別のコマンドに渡す時も活躍します。
実践的な使い方
ファイルの一括ダウンロード
|
|
複数のファイルをダウンロードする時。URLに連番が入ってる場合に便利ですね。
ディレクトリを日付で作成
|
|
月ごとのディレクトリを一括作成。月号をゼロパディングで統一できます。
ログファイルのローテーション
|
|
ログファイルを古い順に番号付けしてローテーション。スクリプト内での処理順序が大切です。
まとめ
seqコマンドのポイント:
- 連続した数字を出力する便利なコマンド
- シェルスクリプトのループに最適
- -w: 桁数を揃える(ゼロパディング)
- -s: 区切り文字を変更(カンマなど)
- -f: printf形式でフォーマット
- 開始値・終了値・増分を柔軟に指定できる
シェルスクリプトをよく書く人は、seqをマスターすると仕事がグッと楽になりますよ!