1から100までの数列から、ランダムに10個の数値をピックアップする

2019-02-08Bash

背景

テストデータの中からランダムにデータを n件 (例えば10件)、ピックアップしたかった。

調査環境

$ bash -version
GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13)
Copyright (C) 2007 Free Software Foundation, Inc.

$RANDOM 環境変数を使った方法

$RANDOM 環境変数を使う方法が思いついたが、問題があった。

echo $((RANDOM%100+1))

上記方法では、1から100までのランダムな値が取得はできるが、同じものが取得されることがある。 ( ex: 1 99 3 53 1 5 20 19 80 100 で、 1 が重複している )

shuf コマンドを使った方法

以下のワンライナーで実現可能。

seq 1 100| shuf| head -n 10

ひとこと

実際にはテストデータファイル data.txt からデータをピックアップする必要があったため、以下のような使い方をした。

cat data.txt| shuf| head -n 10

そこそこ便利。

2019-02-08Bash