パターンに基づいてN行のランダムサンプルを抽出します。

パターンに基づいてN行のランダムサンプルを抽出します。

次の形式のファイルがあります。

train/t/temple/east_asia/00000025.jpg 94
train/t/temple/east_asia/00000865.jpg 94
...
train/s/swamp/00000560.jpg 92
train/s/swamp/00000935.jpg 92
....
train/m/mountain/00000428.jpg 68
train/m/mountain/00000126.jpg 68

最後の数字は学番です。それぞれ1,000行の50の異なるクラスがあります。各クラスからサイズNのサンプルをランダムに抽出し、結果を別のテキストファイルに保存したいと思います。

ベストアンサー1

行はクラス別にグループ化されているので、(gnuツールを使用して)splitファイルを複数の部分に分割し、--fiterオプションを使用して各部分をパイプすることができますshuf窒素その中のランダムな行:

分割 --filter='shuf -n窒素'内部ファイル>外部ファイル

デフォルトsplitは1000行です。これはこの特別な場合に必要なものです。要件が変更されたら、行数を渡す必要があります。たとえば、-l
これを200行に分割し、各行からランダムに30行をインポートする必要があります。

split -l 200 --filter='shuf -n 30' infile > outfile

おすすめ記事