Seleccionar líneas aleatorias de un archivo

Resuelto user121196 asked hace 12 años • 0 respuestas

En un script Bash, quiero seleccionar N líneas aleatorias del archivo de entrada y enviarlas a otro archivo.

¿Cómo se puede hacer esto?

user121196 avatar Feb 12 '12 08:02 user121196
Aceptado

Úselo shufcon la -nopción que se muestra a continuación para obtener Nlíneas aleatorias:

shuf -n N input > output
dogbane avatar Feb 25 '2013 11:02 dogbane

Ordene el archivo aleatoriamente y elija las primeras 100líneas:

lines=100
input_file=/usr/share/dict/words

# This is the basic selection method
<$input_file sort -R | head -n $lines

# If the file has duplicates that must never cause duplicate results
<$input_file sort | uniq        | sort -R | head -n $lines

# If the file has blank lines that must be filtered, use sed
<$input_file sed $'/^[ \t]*$/d' | sort -R | head -n $lines

Por supuesto <$input_filese puede sustituir por cualquier entrada estándar canalizada. Esto ( sort -Ry $'...\t...'para hacer sedcoincidir los caracteres de las pestañas) funciona con GNU/Linux y BSD/macOS.

user881480 avatar Feb 12 '2012 01:02 user881480