seqコマンド : コマンドラインで様々な連番テキストを出力

連番というと

日常生活で「連番」というと宝くじを買う時の指定方法が身近ですね。宝くじと言えばついこの間に年末ジャンボの当選発表がありましたね。当たりましたでしょうか?
(私はそもそも年末ジャンボは買っていないのですが😜)

連番とは

さてそんな話はさておいて、「連番」とは何かしらの番号が連続しているものです。単純に1ずつ増加していくのが連番としては一般的ですね。さらに何かしらの規則に従って数が並んでいるのが数列。なので連番というのは数列の一種と見なせるでしょう。

簡単な連番の作り方

以下は-10から1ずつ増やして10まで並べた連番。
-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10
これくらいの連番ならキーボードのテンキーを打てばすぐ作れます。

では以下のような1〜300までの連番はどうでしょう?これをキーボードで打って作るとなるとさぞ大変でしょう。作業自体は単純ですが、指先の神経と集中力を持続させることが要求されます。

001,002,003,004,005,006,007,008,009,010,011,012,013,014,015,016,017,018,019,020,021,022,023,024,025,026,027,028,029,030,031,032,033,034,035,036,037,038,039,040,041,042,043,044,045,046,047,048,049,050,051,052,053,054,055,056,057,058,059,060,061,062,063,064,065,066,067,068,069,070,071,072,073,074,075,076,077,078,079,080,081,082,083,084,085,086,087,088,089,090,091,092,093,094,095,096,097,098,099,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300



seq : 連番を作るコマンド

さてこういった決まった規則を元に何かしらを出力するはパソコンが得意とするところ。 そしてLinuxには「seq」という連番を出力する便利なコマンドがあります。

seqの基本的な使い方

使い方は簡単。引数に何番まで出力したいか指定すれば、1からその番号までの連番が出力されます。例えば1〜10までの連番を出力させたいときは次の通り。
$ seq 10
なお標準では数字1つにつき改行される出力形式となっています。

出力形式(セパレーター)のカスタマイズ(-sオプション)

改行はせずスペースやカンマ区切りで行を分けずに連続して出力したい場合は、出力形式(セパレーター)をカスタマイズしましょう。その時に使うコマンドオプションは「-s」。
カンマ区切りの場合は
$ seq -s, 10
もしくは
$ seq -s "," 10

スペースで区切る場合は
$ seq -s " " 10
とします。

任意の数値から連番を始めたい場合(引数を2つ指定)

連番の開始を1からではなく、自分の好きな任意の数値から始めたい場合は引数を2つ指定します。1つ目の引数は開始する数値、2つ目は終了する数値です。
例えば5〜15の連番を出力する場合は
$ seq 5 15
となります。

数値の増分を指定したい場合(引数を3つ指定)

ここまで1ずつ増えていく連番のみ扱って来ましたが、2ずつ、3ずつ増えていく連番を作ることも出来ます。この場合はさらに引数を追加して、引数3つ指定します。
例えば10〜100まで5ずつ増やした連番を出力したい場合は
$ seq 10 5 100
となります。また
$ seq 3 0.1 7
のように小数点を用いた数値を増分とすることも出来ます。

増えるのではなく減っていく連番を出力したい場合

当然、数値が増えるのではなく減っていく連番も出力することが出来ます。その場合は増分を指定する手順でマイナスの数値を引数とします。100から5ずつ減らして10まで出力したい場合は
$ seq 100 5 10
となります。

表示形式のカスタマイズ(-fオプション)

5を5.0のように小数点以下1桁という表記で出力したい場合は「-f」オプションを用いるといいでしょう。以下のようになります。
$ seq -f "%.1f" 1 10
また5を00005のように先頭をゼロ埋めして出力したいときは
$ seq -f "%05.0f" 1 10
となります。

任意の文字列と合わせた数字にしたい場合

「-f」オプションを用いると、任意の文字列と合わせた数字を出力することも出来ます。
例えば
$ seq -f "%03.0f.jpg" 3 10
とすれば、「007.jpg」のようなファイル名の連番テキストを出力することが出来ます。これはいろいろと応用が効きそうです。

-fオプションの指定子

さて「-f」オプションの指定子に「f」を用いて来ましたが、指定子としてはその他にも出力形式の違いでいくつか用意されているようです。 簡単に調べた限りではよく分からなかったので今回は説明は割愛します。

出力の数字の幅(桁数)を合わせる(-wオプション)

1から始まって1000で終わる連番では、初めの1は1桁で最後の1000は4桁の桁数です。これを全て同じ桁数(最も大きい桁数の4桁に合わせる)で出力したい場合は「-w」オプションを用います。
$ seq -w 1 1000
なおこの場合は桁数が小さい数は先頭がゼロ埋めされたものになります。

使い方の説明を読むには

seqコマンドはそれほど複雑な使い方とはならないので、ドキュメントを読めばすぐ使い方が分かると思います。コマンドラインからはmanコマンドや--helpオプションで説明を読むことが出来ます。


スポンサーリンク

Amazon商品リンク : コマンドライン関連書籍など

コメント

スポンサーリンク


このブログの人気の投稿

Ubuntu Softwareが起動しないのでいろいろと調べてみる(Ubuntu 20.04.1 LTS)

gnuplotでプロットなどの色をcolornameの指定で変更する

gnuplot : グラフにグリッド線を描く方法(set grid)

gnuplot : プロット画像のサイズ指定について(set sizeとの違い)

円の直径の2乗から円の面積を求める?