Как эффективно перемешивать большие текстовые файлы при их передаче в Linux?

Как эффективно перемешивать большие текстовые файлы при их передаче в Linux?

У меня есть текстовый файл размером в пару ГБ. Я пытаюсь перетасовать этот текстовый файл в конвейере.

Например, вот несколько примеров строк того, что я использую, но это неэффективно, и фактически конвейер, похоже, не запускается, пока не будет прочитан весь файл. Возможно, я ошибаюсь.

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

Я также пытался использовать

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

Но трубка заканчивается, когда заканчивается первый кусок.

Я пытаюсь найти эффективный способ конвейерной передачи текстовых файлов по конвейеру, поскольку не хочу записывать сотни файлов каждый раз, когда мне нужен новый способ перемешивания или случайного распределения.

Спасибо

решение1

Вы можете попробовать такой подход:

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

Здесь для разделения вывода на строки используется IFS.

Связанный контент