Como suas linhas são agrupadas por classe, você poderia (com gnu
tools) split
o arquivo em partes e usar a opção --fiter
para canalizar cada peça para shuf
para extrair N linhas aleatórias a partir dele:
split --filter='shuf -n N' infile > outfile
Observe que split
é padronizado para 1000 linhas - o que é necessário neste caso específico. Se os requisitos mudarem, você terá que passar o número de linhas via -l
por exemplo. para dividir em pedaços de 200 linhas e extrair 30 linhas aleatórias de cada peça:
split -l 200 --filter='shuf -n 30' infile > outfile