Linuxでseqコマンドを使用する方法

公開: 2022-01-29
LinuxPCのターミナルプロンプト。
Fatmawati Achmad Zaenuri / Shutterstock

Linux seqコマンドは、瞬く間に数字のリストを生成します。 しかし、この機能をどのように実用化できるでしょうか。 seqがどのように役立つかをお見せします。

seqコマンド

一見すると、Linuxのseqコマンドは奇妙なもののように見えます。 それはあなたが数のシーケンスを素早く生成することを可能にします、そしてそれはそれです! ただし、ここでのキーワードは「迅速」です。 すぐに、この小さなコマンドの実行速度がわかります。

しかし、それらがどのように生成されるかに関係なく、数字のリストはどれほど有用ですか? seqコマンドは1985年にUnixの第8版に追加されました。それ以来ずっと存在しているので、何か価値のあることをしなければなりません。

Unixの哲学は、1つのことを実行し、それをうまく実行する小さなユーティリティでいっぱいであるということです。 この哲学の中心的な信条の1つは、他のプログラムからの入力を受け入れるプログラムを作成することです。 もちろん、これは、これらのプログラムが他のプログラムによる入力として使用できる出力を生成する必要があることも意味します。

seqコマンドは、パイプまたはコマンドライン拡張のいずれかを介して、その出力を利用する他のコマンドと一緒に使用されると、独自のコマンドになります。

基本的なリストの生成

コマンドラインパラメータとして単一の数値を使用してseqを起動すると、1からその数値までカウントされます。 次に、以下に示すように、ターミナルウィンドウに1行に1つずつ番号を出力します。

 seq 6 

広告

以下に示すように、コマンドラインで2つの数字を入力すると、最初の数字が開始番号になり、2番目の数字が終了番号になります。

 seq 4 10 

3番目の数値を含めることでステップサイズを設定できます。 開始番号と終了番号の間にあります。 次のように入力して、 seqに、6で始まり、48で終わり、6のステップを使用する数値のリストを作成するように依頼します。

 seq 6 6 48 

後方に数える

また、 seqに、最高から最低までの数字のリストを作成するように依頼することもできます。 ただし、そうするためには、否定的なステップを提供する必要があります。

次のコマンドは、ステップを負の数として入力するため、6ステップで24から12までカウントするリストを生成します。

 seq 24 -6 12 

小数で数える

開始番号、終了番号、およびステップ番号も小数にすることができます。 いずれかの数値が小数の場合、他の数値も小数として扱われます。 次のコマンドは、ステップ0.2の数値のリストを生成します。

 seq 1 0.2 2 

seqの速度

seqは非常に高速です。唯一のボトルネックは、ターミナルウィンドウでコマンドを入力するのにかかる時間です。 その速度をテストするために、250,000個の数字のリストを求めましょう。

広告

timeコマンドを使用して次のように入力し、プロセスが完了するまでにかかる時間を確認します。

 時間シーケンス250000 

結果はリストの下に表示されます。 適度に電力が供給されているテストPCでも、 seqは驚くほど高速です。

リスト全体が作成され、約1/3秒で画面に書き込まれました。 リストをファイルにリダイレクトすると、ターミナルウィンドウに入力するオーバーヘッドを回避することもできます。

これを行うには、次のように入力します。

 時間シーケンス250000> numbers.txt 

リストを完成させてファイルを作成するのにかかる時間は、約1/7秒になりました。

セパレーターの使用

改行文字は、リスト内の各番号の間に表示されるデフォルトの文字です。 そのため、各番号が独自の行にある垂直リストとして表示されます。 必要に応じて、別のセパレータを提供できます。

広告

たとえば、コンマ区切りのリスト、コロンで分割されたリスト、またはその他の句読点や記号を作成する必要があるとします。 区切り文字は実際には文字列であるため、複数の文字を使用できます。

-s (区切り文字)オプションを使用します。 次のコマンドは、コンマ区切りのリストを生成します。

 seq s、6 6 36

このコマンドは、区切り文字としてコロン( :を使用します。

 seq -s:6 6 36

このコマンドは、区切り文字として2つのハイフン( - )を使用するようにseqに指示します。

 seq -s-- 6 6 36 

フォーマット文字列の使用

seqコマンドは、C言語スタイルのフォーマット文字列もサポートしています。 これらを使用すると、セパレータを指定するだけでなく、より詳細な制御で出力をフォーマットできます。 フォーマット文字列を使用するには、 -f (フォーマット)オプションを使用します。

次のコマンドは、出力を2文字にパディングするためにゼロを使用するようにseqに指示します。

 seq -f "%02g" 6 

広告

次のように、文字列を任意のテキストでフォーマットし、文字列の任意の場所に数値を配置できます。

 seq -f "Cのような形式の文字列の数値%02g" 6 

ゼロパディングを設定する簡単な方法

ゼロパディングを設定する最も簡単な方法は、 -w (等しい幅)オプションを使用することです。 これは、 seqにゼロを使用して数値を埋めるように指示するため、それらはすべて最大の数値と同じ幅になります。

次のコマンドは、100刻みで0から1,000までカウントし、すべての数値にゼロが埋め込まれます。

 seq -w 0100 1000 

最長の数値は4文字であるため、狭い数値はすべて、その幅までゼロで埋められます(0でも4つのゼロで埋められます)。

bcへの配管シーケンス

区切り文字を数学記号として設定し、リストをbcコマンドにパイプすることにより、そのリスト内の数値を評価できます。

次のコマンドは、アスタリスク( * )で区切られた1から始まり、6で終わる番号のリストを生成します。

 seq -s * 6
広告

そのリストをbcにフィードすると、アスタリスク( * )を乗算記号として使用してリストが評価されます。

 seq -s * 6 | 紀元前

他のシンボルでもこれを行うことができます。 以下のコマンドは、プラス記号( + )を使用して、すべての数字が追加されたリストを作成します。

 seq -s + 5

次のように入力して、それをbcにパイプし、リストを評価します。

 seq -s + 5 | 紀元前

seqを使用したファイルの作成

touchコマンドは、ファイルの時刻と日付のスタンプを更新します。 ファイルが存在しない場合は、touchがファイルを作成します。 touchseqを使用したコマンドライン拡張を使用して、テーマ名はあるが番号が異なるファイルのコレクションを作成できます。

同じベース名と異なる番号(file-1.txt、file-2.txtなど)で10個のファイルのセットを作成します。 次のように入力します。

 $(seq -f "file-%g.txt" 1 10)をタッチします

次に、次のように入力してファイルを確認します。

 lsファイル* 

Bashループでseqを使用する

Bashスクリプトでseqを使用して、小数でループを制御できます。

広告

次のテキストをエディタに入力し、「loops.sh」として保存します。

 #!/ bin / bash

  $(seq 5 0.2 6.6);のvalの場合行う

  echo "値は現在:$ val"

終わり

次に、次のように入力して、新しいスクリプトを実行可能にします。

 chmod + x loop.sh 

スクリプトを実行すると、ループカウンターがターミナルウィンドウに出力されます。 次に、次のように入力して、ループが繰り返されるたびに10進ループカウンターが増加することを確認できます。

 ./loop.sh 

seqも逆方向にカウントできることを忘れないでください。 同じようにループで使用できます。

素晴らしくてシンプル

seqについての1つのことは、学習曲線があまりないことです。 さわやかに短いmanページがありますが、それでも面白い方法で使用できます。

多くの場合、現実的なサイズのテストファイルをすばやく作成する必要があるため、フォーマット文字列を使用してseqを使用します。 次に、出力をリダイレクトして、必要な数のダミーデータを含むファイルを作成します。

関連:開発者と愛好家のための最高のLinuxラップトップ