ファイル内からランダムに一行を取り出す

あるファイルの中からランダムに一行を取り出したいとしましょう。この目的のために便利なのは shuf です。shuf は多くの Linux 環境にインストールされているものですが、macOS では coreutils をインストールすることで (e.g., brew install coreutils) shuf 同等の機能を持つ gshuf をインストールできます。この記事では gshuf を使います。

次の内容の a.txt というファイルがあるとします。

$ cat a.txt
あい
うえ
お

このファイルの各行をランダムにシャッフルするために gshuf を使えます。

$ gshuf a.txt 
うえ
お
あい

(実行するたびに結果は変わります)

gshuf でファイルの各行をランダムに並び替えられるので、| head -n 1 を後ろに置くだけでランダムな一行を取り出せます。

$ gshuf a.txt | head -n 1
お