[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
seq
: 数列を表示するseq
は、数列を標準出力に表示する。
書式:
seq [option]… last seq [option]… first last seq [option]… first increment last |
seq
は、first から last までの数を increment おきに表示する。
デフォルトでは、それぞれの数は 1 行に 1 個づつ表示される。
increment が指定されていない場合は、first が last
より大きい場合でも、デフォルトの ‘1’ が increment として使用される。
first のデフォルトもまた ‘1’ である。
従って、seq 1
は ‘1’ を表示するが、seq 0
や seq 10 5
は、何も出力しない。数列が終了するのは、現在の数値に increment を加えたら
last より大きくなってしまう時点である。だから、seq 1 10 10
は、‘1’ しか表示しない。increment の値には ‘0’ を指定できない。
同じ数を繰り返し出力したかったら、yes
コマンドを使うべきである。
また、first, increment, last の値は、NaN
(訳注: Not a Number) であってはならない。数値には浮動小数点数を指定することもできる。
See section 浮動小数点数.
このプログラムでは以下のオプションが使用できる。参照: 共通オプション. オプションはオペランドの前に置かなければならない。
すべての数を format を使用して表示する。format は、 ‘printf’ 形式の浮動小数点数の変換指定をただ一つ含むものでなければならない。 すなわち、‘%a’, ‘%e’, ‘%f’, ‘%g’, ‘%A’, ‘%E’, ‘%F’, ‘%G’ のいづれかである。 ‘%’ の後ろには 0 個以上のフラグを、‘-+#0 '’ のうちから選んで置くことができる。 また、それに続けて、1 個以上の数字からなるフィールド幅を指定することもできるし、 さらにその後ろに、‘.’ とそれに続く 0 個以上の数字からなる精度を指定することもできる。 format には、任意の数の ‘%%’ 変換指定が含まれていてもよい。 変換指定はすべて、‘printf’ の場合と同じ意味を持っている。
デフォルトの表示形式は、first, increment, last がどういう表記を使用しているかよって決まる。そのすべてが固定小数点の 10 進数表記を使用しているならば、デフォルトの表示形式は ‘%.pf’ になる。 この p には、出力する数値を過不足なく表現できる最小の精度が来る。 それ以外の場合、デフォルトの表示形式は ‘%g’ になる。
数の区切りに string を使う。デフォルトは改行である。出力の最後には、必ず改行が付く。
すべての数を同じ桁数で表示する。先頭の空きは 0 で埋める。first, increment, last は、すべて固定小数点の 10 進数表記でなければならない (他のやり方で先頭を埋めたければ、‘--format’ を使うこと)。
‘-f’ オプションを使えば、出力をもっときめ細かく制御することができる。
$ seq -f '(%9.2E)' -9e5 1.1e6 1.3e6 (-9.00E+05) ( 2.00E+05) ( 1.30E+06) |
出力を 16 進数の整数にしたかったら、printf
を使って変換すればよい。
$ printf '%x\n' $(seq 1048575 1024 1050623) fffff 1003ff 1007ff |
数のリストが非常に長くなる場合は、xargs
を使用すると、引数リストの長さに対するシステムの制限を回避することができる。
$ seq 1000000 | xargs printf '%x\n' | tail -n 3 f423e f423f f4240 |
8 進数の出力を生成するには、printf に対して %x
の代わりに、%o
フォーマットを使用すればよい。
ほとんどのシステムで seq
は、少なくとも 2^53
までの数値に対して整数の出力を生成することができる。それより大きい整数に対しては概算になる。
細かい点は、ご使用のシステムの浮動小数点の実装によって異なっている。
See section 浮動小数点数. seq
が 2^64
までの整数に対してなら、きちんと動作するが、
それより大きな整数に対しては、数値が不正確になることがあるというのは、よくある話である。
$ seq 50000000000000000000 2 50000000000000000004 50000000000000000000 50000000000000000000 50000000000000000004 |
とは言え、負ではない整数を対象とし、インクリメントが 1 で、
フォーマット指定オプションはないという条件の元では、
seq
は任意の大きな数値を表示できることも心に留めておいていただきたい。
seq
でとんでもなく大きな桁の値を扱うときは、気をつけた方がよい。
さもないと、seq
は内部で浮動小数点を使用しているので、結果を見てびっくりするかもしれない。
たとえば、x86 のプラットフォームでは、内部表現が 64 ビットの仮数部を使用しているが、
そこで次のコマンドを実行すると、
seq 1 0.0000000000000000001 1.0000000000000000009 |
seq
は 1.0000000000000000007 を二度出力し、1.0000000000000000008
をスキップする (訳注: 訳者の amd64 環境では、1.0000000000000000008
ではなく、1.0000000000000000006 をスキップする)。
終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June 7, 2022 using texi2html 1.82.