GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo aleatorizar las líneas en un archivo usando herramientas estándar en Red Hat Linux?

Um, no olvidemos

sort --random-sort

shuf es la mejor manera.

sort -R es dolorosamente lento. Acabo de intentar ordenar el archivo de 5GB. Me di por vencido después de 2,5 horas. Entonces shuf lo arreglé en un minuto.


¡Y obtienes una frase de Perl!

perl -MList::Util -e 'print List::Util::shuffle <>'

Utiliza un módulo, pero el módulo es parte de la distribución del código Perl. Si eso no es lo suficientemente bueno, puede considerar enrollar el suyo propio.

Intenté usar esto con el -i flag ("editar en el lugar") para que edite el archivo. La documentación sugiere que debería funcionar, pero no es así. Todavía muestra el archivo aleatorio en la salida estándar, pero esta vez elimina el original. Te sugiero que no lo uses.

Considere un script de shell:

#!/bin/sh

if [[ $# -eq 0 ]]
then
  echo "Usage: $0 [file ...]"
  exit 1
fi

for i in "[email protected]"
do
  perl -MList::Util -e 'print List::Util::shuffle <>' $i > $i.new
  if [[ `wc -c $i` -eq `wc -c $i.new` ]]
  then
    mv $i.new $i
  else
    echo "Error for file $i!"
  fi
done

No probado, pero con suerte funciona.


Linux
  1. Cómo extraer el archivo tar.gz en Linux usando la línea de comandos

  2. ¿Cómo copiar el diseño de partición de un disco completo usando herramientas estándar?

  3. 4 herramientas para descargar cualquier archivo usando la línea de comandos en Linux

  4. ¿Cómo puedo contar la cantidad de carpetas en una unidad usando Linux?

  5. ¿Cómo puedo editar todos los archivos devueltos por find in vi en Linux?

Cómo usar el comando táctil en Linux

Cómo usar el comando de cabeza de Linux

Cómo usar el comando diff de Linux

Cómo borrar de forma segura un disco y un archivo usando el comando shred de Linux

Cómo mezclar líneas en un archivo en Linux

Cómo invertir líneas en un archivo por caracteres en Linux