[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
shuf
: テキストをシャッフルするshuf
は、入力された行をランダムに並べ替えてから出力することによって、
入力のシャッフルを行う。どの並び替えが出力されるかは、確率的に等しい。
書式:
shuf [option]… [file] shuf -e [option]… [arg]… shuf -i lo-hi [option]… |
shuf
には三つの動作モードがあり、それぞれ、入力行をどこから取得するかが違っている。
デフォルトでは、標準入力から行を読み込む。以下のオプションは、動作モードを変更する。
コマンドラインの各オペランドを入力行として扱う。
lo から hi の範囲の符号なしの 10 進整数を 1 行に 1 個含むファイルから入力があったかのように動作する。
shuf
の他のオプションは、どの動作モードでも、その動作に影響を与える。
最大でも count 行までしか出力しない。デフォルトでは、入力されたすべての行を出力する。
出力を、標準出力ではなく、output-file に書き出す。shuf
は、
入力をすべて読み込んでから、output-file をオープンする。従って、
shuf -o F <F
や cat F | shuf -o F
というコマンドを使って、
ファイルを直接書き変える形でシャッフルしても安全である。
ランダムデータのソースとして file を使用する。 そのランダムデータはどんな並べ替えになるかを決めるのに使用される。 See section ランダムデータのソース.
値の反復出力を行う。別の言い方をすると、置き換えるものについてそのつど選択を行う。
このオプションを使用した場合、出力は入力を並び替えたものになるのではない。
そうではなく、各出力行がすべての入力からランダムに選ばれるのである。
このオプションは、たいてい ‘--head-count’ と組み合わせて使用する。
‘--head-count’ を指定しないと、shuf
はいつまでも出力を続けることになる。
項目の区切りに、改行 (ASCII LF) ではなく、ゼロバイトを使用する。 すなわち、入力を ASCII NUL で分離された項目として扱い、出力する各項目の末尾に ASCII NUL を付加する。このオプションは、‘perl -0’, ‘find -print0’, ‘xargs -0’ などと組み合わせて使用すると、 便利なことがある。そうしたコマンドでも、わがままなファイル名を (空白などの特殊文字を含んでいる場合でも) きちんと確実に処理するために、 同様なことをしているのである。
例を挙げる。
shuf <<EOF A man, a plan, a canal: Panama! EOF |
上記の結果は、こんな出力になるかもしれない。
Panama! A man, a canal: a plan, |
同様に、次のコマンドの出力は、
shuf -e clubs hearts diamonds spades |
こうなるかもしれない。
clubs diamonds spades hearts |
下記は、‘shuf -i 1-4’ というコマンドの出力の一例である。
4 2 1 3 |
上記のどの例でも、入力行は 4 行である。
従って、入力は 24 とおりに並べ替えることが可能であり、shuf
が生成するのは、そのどれか一つである。
一般的に言うと、入力行が n 行なら、n! とおりに
(n の階乗、すなわち、n * (n - 1) * … * 1 とおりに)
並べ替えて、出力することができる。
それぞれが 0 から 9 までの範囲にある数値を 50 回ランダムに出力するには、次のようにする。
shuf -r -n 50 -i 0-9 |
コイン・トス 100 回をシミュレートする。
shuf -r -n 100 -e Head Tail |
終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June 7, 2022 using texi2html 1.82.