从 stdin 进行子采样的 Linux 命令

标签 linux stdin random

我想随机保留通过 stdin 流入的所有行的一小部分(比如 0.001)。是否有执行此操作的 linux 命令?

我总是可以编写一个 python 脚本来生成一个统一的随机数,并根据它是否 <= 0.001 保留该行。但我想避免编写自己的脚本,并在 linux 中寻找本地命令。

最佳答案

够原生吗?

cat input | awk 'rand() <= 0.001' 

编辑:让它每秒返回不同的行集:

cat input | awk 'BEGIN{srand();} rand() <= 0.001'

关于从 stdin 进行子采样的 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37307432/

相关文章:

linux - 为什么 Linux bash 中不是 "mv -r"?

我可以同时使用 scanf 和 getchar 来读取文件吗?

c++ - 测试标准输入是否有 C++ 输入(windows 和/或 linux)

java - 设置边距时,相对布局中的按钮会被压扁

linux - 如何将存档的所有对象包含在共享对象中?

c - 了解程序如何加载到内存并执行的任何动手练习

linux - 有没有办法改变vim的默认模式

c - 从 stdin 读取(可变长度文件)

arrays - 以 30% 的概率动态分配和初始化新对象

java - 如何使用特定字符生成特定长度的随机字符数组