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

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

shuf HUGETEXTFILE.txt|some command

cat HUGETEXTFILE.txt|sort -R |some command

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

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

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

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

Спасибо

1 ответ1

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .