Вы можете попробовать этот подход:
cat bigfile.txt| while IFS= read -r line; do echo '%s\n' "$line" |shuf |sort -n| grep "sample"; done
IFS используется для разделения вывода на строки здесь.
У меня есть текстовый файл, который составляет пару ГБ. Я пытаюсь перетасовать этот текстовый файл в трубу.
Например, это некоторые примеры строк того, что я использую, но это неэффективно, и на самом деле канал не запускается, пока не будет прочитан весь файл. Может быть, я ошибаюсь в этом.
shuf HUGETEXTFILE.txt|some command cat HUGETEXTFILE.txt|sort -R |some command
Я также пытался использовать
split -n 1/numberofchunks HUGETEXTFILE.txt|sort -R|some command
Но трубопровод заканчивается, когда заканчивается первый кусок.
Я пытаюсь найти эффективный способ передачи файловых перестановок в канале, потому что я не хочу записывать сотни файлов каждый раз, когда мне нужен новый способ перестановки или случайного распределения.
Спасибо
Вы можете попробовать этот подход:
cat bigfile.txt| while IFS= read -r line; do echo '%s\n' "$line" |shuf |sort -n| grep "sample"; done
IFS используется для разделения вывода на строки здесь.