Primeiro você deve extrair um cabeçalho de 36 linhas do arquivo chamado input
, depois escolher 60000 linhas aleatórias do restante do arquivo com a possibilidade de escolher aleatoriamente a mesma linha várias vezes. Toda saída deve ir para o arquivo chamado output
.
Usando shuf
dos núcleutils GNU:
#!/bin/sh
# Fetch header (36 first lines)
head -n 36 <input >output
# Scramble the other lines and pick 60000 (allowing for repeated lines)
tail -n +37 <input | shuf -r -n 60000 >>output
Alternativamente:
( head -n 36 <input; tail -n +37 <input | shuf -r -n 60000 ) >output
Com GNU head
, que deixa o fluxo do arquivo de entrada na posição após a última linha produzida, o que significa que shuf
pode continuar onde head
terminou de ler (isso pode não funcionar com alguns implementações não-GNU head
):
( head -n 36; shuf -r -n 60000 ) <input >output