Linux 从标准输入进行子采样的命令
Linux command to subsample from stdin
我想随机保留一小部分(比如 0.001)通过 stdin 流入的所有行。是否有 linux 命令可以做到这一点?
我总是可以写一个python脚本来生成一个统一的随机数,并根据它是否 <= 0.001 保留该行。但我想避免编写自己的脚本并在 linux.
中寻找本机命令
够原生吗?
cat input | awk 'rand() <= 0.001'
编辑:使其每秒 return 组不同的行:
cat input | awk 'BEGIN{srand();} rand() <= 0.001'
大多数 Linux 发行版还包含 BSD games 的发行版(基于 Debian 的发行版上的软件包 bsdgames
和基于 Redhat 的发行版上的软件包 bsd-games
)。安装该软件包后,您可以简单地使用 random
过滤器,它完全符合您的要求:
cat input | random 100
平均每 100 行打印一次。
我想随机保留一小部分(比如 0.001)通过 stdin 流入的所有行。是否有 linux 命令可以做到这一点?
我总是可以写一个python脚本来生成一个统一的随机数,并根据它是否 <= 0.001 保留该行。但我想避免编写自己的脚本并在 linux.
中寻找本机命令够原生吗?
cat input | awk 'rand() <= 0.001'
编辑:使其每秒 return 组不同的行:
cat input | awk 'BEGIN{srand();} rand() <= 0.001'
大多数 Linux 发行版还包含 BSD games 的发行版(基于 Debian 的发行版上的软件包 bsdgames
和基于 Redhat 的发行版上的软件包 bsd-games
)。安装该软件包后,您可以简单地使用 random
过滤器,它完全符合您的要求:
cat input | random 100
平均每 100 行打印一次。