Categories: linux

Linuxのseqコマンドを完全解説!連番生成を操る方法とは?

Linuxを使ってスクリプトを組んでいると、連続した数値を簡単に扱いたい場面がよくあります。そんな時に活躍するのが、seqコマンドです。seqは「sequence(連続)」の略で、開始値から終了値までの数値を、一定の間隔で出力するための便利なコマンドです。

この記事では、seqコマンドの基本的な使い方から、実用的なオプション、スクリプトでの応用方法までをわかりやすく紹介します。初心者から中級者の方まで、seqの使い方をマスターしたい方は、ぜひ最後までご覧ください。


seqコマンドとは?

seqコマンドは、数値の並び(連番)を生成するためのLinuxコマンドです。シェルスクリプトやループ処理において、「1から100まで」「10から1まで」「5ずつ増加」など、特定のパターンで数値を出力したい時に活躍します。

以下のように、シンプルな書式で使えるのが特徴です。

bashコピーする編集するseq 終了値
seq 開始値 終了値
seq 開始値 間隔 終了値

コマンドを実行すると、各数値が1行ずつ表示されます。


基本的な使い方

1からnまでの数値を表示

bashコピーする編集するseq 5

出力結果:

コピーする編集する1
2
3
4
5

このように、seqに1つの数値(終了値)を指定すると、1からその数値まで1ずつ増加する連番が出力されます。


開始値と終了値を指定する

bashコピーする編集するseq 3 7

出力結果:

コピーする編集する3
4
5
6
7

開始値と終了値を指定すると、その範囲内の連続した数値を出力します。


開始値・間隔・終了値を指定する

bashコピーする編集するseq 1 2 9

出力結果:

コピーする編集する1
3
5
7
9

この書式では、開始値から間隔(ステップ)ずつ増加させて、終了値に達するまでの数値を出力します。


応用例と便利なオプション

出力に区切り文字を指定する:-sオプション

デフォルトでは出力が改行区切りですが、-sオプションを使うと区切り文字を自由に指定できます。

bashコピーする編集するseq -s "," 1 5

出力結果:

コピーする編集する1,2,3,4,5

CSV形式のデータを作りたい時などに便利です。


整数をゼロパディングする:-wオプション

桁を揃えて出力したい場合は、-w(ワイド)オプションを使用します。

bashコピーする編集するseq -w 1 10

出力結果:

python-replコピーする編集する01
02
03
...
10

ゼロ埋めにより、整然としたリストを作成できます。


出力するフォーマットを指定:-fオプション

-fオプションを使うと、数値の前後に文字を加えることができます。C言語形式の書式指定が可能です。

bashコピーする編集するseq -f "item-%02g" 1 5

出力結果:

コピーする編集するitem-01
item-02
item-03
item-04
item-05

ファイル名や変数名を連番で自動生成したい場合に非常に有用です。


降順の連番を生成する

seqは昇順だけでなく、降順の出力も可能です。ステップ(間隔)を負の値にすればOKです。

bashコピーする編集するseq 10 -1 1

出力結果:

python-replコピーする編集する10
9
8
...
1

逆順で処理を行いたいときなどに活躍します。


スクリプトでの活用方法

seqはforループと組み合わせて使うことが多いです。

bashコピーする編集するfor i in $(seq 1 5); do
  echo "行番号: $i"
done

出力結果:

makefileコピーする編集する行番号: 1
行番号: 2
行番号: 3
行番号: 4
行番号: 5

このように、ループ処理のカウンターとして使うと、簡潔で読みやすいコードになります。


よくあるエラーと注意点

  • 小数点には非対応(整数のみ):
    seqは整数での連番には適していますが、小数点には基本的に対応していません。小数を扱いたい場合はawkなどの別ツールを検討しましょう。
  • 桁数の制御に注意:
    -wオプションを使わない場合、桁数が揃わないため、整列表示や文字列結合に違和感が出ることがあります。
  • seqは環境によって使えない場合がある:
    ごく一部のLinux環境ではseqがインストールされていないこともあります。そうした場合はbashの組み込み文({1..5})で代用可能です。

seqコマンドの代替:波括弧展開との違い

bashでは、{1..5}のような波括弧展開を使って連番を生成することもできます。

bashコピーする編集するfor i in {1..5}; do
  echo $i
done

この方法は高速かつシンプルですが、-s-fのような柔軟な制御はできません。柔軟性が必要な場合はseqの方が優れています。


まとめ

seqコマンドは、連続した数値を手軽に生成できる便利なLinuxユーティリティです。特にスクリプト内でのループ処理や、番号付きファイル名の生成、データの整形などにおいて威力を発揮します。

基本の書式から応用オプション、注意点までを把握しておけば、日常のターミナル作業がぐっと効率化します。特に、-s-w-fオプションは覚えておくと実務で非常に役立ちます。

Linuxのシェルスクリプトやコマンドライン操作をもっと便利にしたい方は、ぜひseqを積極的に使ってみてください。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。