从文件或流中获取样本?

mik*_*iku 3 streaming filter random stdin

是否有任何实用程序可以在命令行上从流中过滤样本,例如

  • 打印文件的每 100 行或
  • 以 0.01 的概率打印出文件的一行或
  • 通过水库采样等算法?

更新:到目前为止我发现:

  • 打印文件的每 100 行:sed -n '0~100p'

ilk*_*chu 5

使用 (GNU) awk 的简单解决方案:

100 中的每一个(数字可被 100 整除的行):

do_something | awk 'NR % 100 == 0'
Run Code Online (Sandbox Code Playgroud)

或伪随机:

do_something | awk 'rand() < 0.01' 
Run Code Online (Sandbox Code Playgroud)

这些数字可能不完全一致,并且可能需要添加BEGIN{ srand() }以初始化每次运行的新种子。