4 个版本
0.1.3 | 2020年11月19日 |
---|---|
0.1.2 | 2020年11月19日 |
0.1.1 | 2020年11月18日 |
0.1.0 | 2020年11月18日 |
#36 in #probabilistic
6KB
69 行
randlines
从按行排列的文件中输出随机数量的行。在 shuf 被终止的地方继续。
安装
$ cargo install randlines
用法
$ randlines -h
randlines 0.1.1
Emit a random subset of lines from a file. This is a probabilistic program, you
will not get exactly `n` lines.
Typically, you can use shuf(1) which uses reservoir sampling and is very
efficient. However, if we want to extract 10M random lines from a file of 100M
lines, shuf(1) might be killed. However, randlines will not shuffle lines, just
skip over random number of lines.
USAGE:
randlines [OPTIONS] [input]
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-n <n> [default: 16]
-s, --size-hint <size-hint>
ARGS:
<input>
从文件中输出一个随机子集的行。这是一个概率程序,您不会得到正好 n
行。
通常,您可以使用 shuf(1),它使用水库抽样并且非常高效。但是,如果我们想从包含 1 亿行文件的 10M 行中提取随机行,shuf(1) 可能会被终止。然而,randlines 不会打乱行,只是跳过随机数量的行。
待办事项
- 从 stdin 读取时压缩临时输出
依赖项
~5–14MB
~171K SLoC