$0
-r N : 抽出確率を指定。0.1 や 1e-2 など指定する。0.5 がデフォルトの値。'1/3' のような分数も対応。
-k N : 1始まりの列番号を指定することで、その数を -r で指定された数に乗じた数が抽出確率になる。
-: ; 何番目かのデータであるかを付加して表示される。( -= でヘッダ仮定があれば、2行目を1とする。)
-q ; 標準エラー出力に出すことになっている出力行数や乱数シードの情報を出力しない。
-u num ; -kの指定がある場合に、その列の値が num 以下のみであれば、出力の対象となる。
-v その行の抽出確率の指定値が、行の末尾に表示される。
-R : 復元抽出するように抽出する。ある意味において、二項分布をうまくシュミレートする。
-V : 確率的抽出動作はしない。単に各行の末尾に抽出指定値を付加する。
-x N : 各行の抽出確率を出力する際に、数字を見やすくするために、N倍したものを出力する。
-= 入力の最初の1行目はそのまま出力し、ランダム抽出の対象とはしない。
-/ str : 入力の区切り文字をstr で指定する。未指定ならタブ文字。
-. str : 出力の区切り文字をstr で指定する。未指定ならタブ文字。
[用途と使い方]
標準入力の各行を、指定された確率で、標準出力に書き出す。
出力において順番の入れ替えはしない。
$0 -r 1e-2
# 標準入力の各行を100個に1個出力。
$0 -r (rate) -k (key)
# 各行の抽出確率が タブ区切り key 列目(1始まり)の値の数 を
# rate にかけ算した数になる。
[注意点]
各行の抽出確率r の値が0以上1以下の数でない場合の処理について:
r>1 の場合は、まずint(r)回同じ行を書き出し、そして、r-int(r)の確率で1回出力する。
r<0 の場合は、何も出力をしない。
このようにすることで、各行が抽出される回数の期待値が、r>0の場合に r回となる。