¿Cómo mezclar archivos de texto grandes de manera eficiente mientras se canalizan en Linux?

¿Cómo mezclar archivos de texto grandes de manera eficiente mientras se canalizan en Linux?

Tengo un archivo de texto que tiene un par de GB. Estoy intentando mezclar este archivo de texto en una tubería.

Por ejemplo, estas son algunas líneas de muestra de lo que estoy usando, pero no es eficiente y, de hecho, la tubería no parece iniciarse hasta que se lee todo el archivo. Quizás me equivoque en eso.

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

También intenté usar

split -n 1/numberofchunks HUGETEXTFILE.txt|sort -R|some command 

Pero la tubería termina cuando termina el primer trozo.

Estoy tratando de encontrar una manera eficiente de canalizar la mezcla de archivos de texto en una tubería porque no quiero escribir cientos de archivos cada vez que necesito una nueva forma de mezcla o distribución aleatoria.

gracias

Respuesta1

Puedes probar este enfoque:

cat bigfile.txt|
  while IFS= read -r line; do
    echo '%s\n' "$line" |shuf |sort -n| grep "sample";
  done

Aquí se utiliza IFS para dividir la salida en líneas.

información relacionada