У меня есть текстовый файл размером в пару ГБ. Я пытаюсь перетасовать этот текстовый файл в конвейере.
Например, вот несколько примеров строк того, что я использую, но это неэффективно, и фактически конвейер, похоже, не запускается, пока не будет прочитан весь файл. Возможно, я ошибаюсь.
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.