Apakah ada perintah Linux yang dapat digunakan untuk mengambil sampel subset file? Misalnya, sebuah file berisi satu juta baris, dan kami ingin mengambil sampel secara acak hanya seribu baris dari file tersebut.
Untuk random yang saya maksud adalah setiap garis mendapat peluang yang sama untuk dipilih dan tidak ada garis yang dipilih yang berulang.
head
dan tail
dapat memilih subset dari file tetapi tidak secara acak. Saya tahu saya selalu dapat menulis skrip python untuk melakukannya tetapi hanya ingin tahu apakah ada perintah untuk penggunaan ini.
Jawaban yang Diterima:
shuf
perintah (bagian dari coreutils) dapat melakukan ini:
shuf -n 1000 file
Dan setidaknya untuk versi non-kuno saat ini (ditambahkan dalam komit dari 2013), yang akan menggunakan pengambilan sampel reservoir bila perlu, artinya tidak boleh kehabisan memori dan menggunakan algoritme cepat.