GNU/Linux >> Linux Esercitazione >  >> Linux

Come campionare casualmente un sottoinsieme di un file?

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.


Linux
  1. Come salvare l'output dei comandi in un file in Linux

  2. Come utilizzare il comando Tar in Linux

  3. Come forzare l'eliminazione di un file?

  4. Come aggiungere l'output a un file?

  5. Come generare checksum parziale di un file

Come usare il comando Tronca in Linux

Come utilizzare un comando file in Linux

Come aprire un file in Linux

Come mescolare le linee in un file in Linux

Come usare il comando lsof in Linux

Come utilizzare il comando shred Linux