C'è qualche comando Linux che si può usare per campionare un sottoinsieme di un file? Ad esempio, un file contiene un milione di righe e vogliamo campionare casualmente solo mille righe da quel file.
Per random intendo che ogni riga ha la stessa probabilità di essere scelta e nessuna delle righe scelte è ripetitiva.
head
e tail
può selezionare un sottoinsieme del file ma non a caso. So che posso sempre scrivere uno script python per farlo, ma mi chiedo solo se esiste un comando per questo utilizzo.
Risposta accettata:
Il shuf
comando (parte di coreutils) può fare questo:
shuf -n 1000 file
E almeno per ora versioni non antiche (aggiunte in un commit del 2013), che utilizzeranno il campionamento del giacimento quando appropriato, il che significa che non dovrebbe esaurire la memoria e utilizza un algoritmo veloce.