ファイルのサブセットをサンプリングするために使用できるLinuxコマンドはありますか?たとえば、ファイルに100万行が含まれていて、そのファイルから1000行だけをランダムにサンプリングしたいとします。
ランダムの場合、すべての行が同じ確率で選択され、選択された行はどれも繰り返されないことを意味します。
head
およびtail
ファイルのサブセットを選択できますが、ランダムには選択できません。私はいつでもそうするためのPythonスクリプトを書くことができることを知っていますが、この使用法のためのコマンドがあるのだろうかと思っています。
承認された回答:
shuf
コマンド(coreutilsの一部)はこれを行うことができます:
shuf -n 1000 file
そして、少なくとも今のところ(2013年からのコミットで追加された)非古代バージョンでは、適切な場合にリザーバーサンプリングを使用します。つまり、メモリが不足することはなく、高速アルゴリズムを使用しています。