$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回となる。