Seleccionar líneas aleatorias de un archivo
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?
Aceptado
Úselo shuf
con la -n
opción que se muestra a continuación para obtener N
líneas aleatorias:
shuf -n N input > output
Ordene el archivo aleatoriamente y elija las primeras 100
lí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_file
se puede sustituir por cualquier entrada estándar canalizada. Esto ( sort -R
y $'...\t...'
para hacer sed
coincidir los caracteres de las pestañas) funciona con GNU/Linux y BSD/macOS.