Câu trả lời:
Bạn có thể sử dụng shuf
lệnh từ GNU coreutils . Tiện ích này khá nhanh và sẽ mất ít hơn một phút để xáo trộn tệp 1 GB.
Lệnh dưới đây có thể chỉ hoạt động trong trường hợp của bạn vì shuf
sẽ đọc đầu vào hoàn chỉnh trước khi mở tệp đầu ra:
$ shuf -o File.txt < File.txt
brew install coreutils
và sử dụng /usr/local/bin/gshuf
.
cat myfile | perl -MList::Util=shuffle -e 'print shuffle(<STDIN>);'
Tôi lưu ý chắc chắn rằng nó sẽ chạy nhanh như thế nào
Python one-liner:
python -c 'import sys, random; L = sys.stdin.readlines(); random.shuffle(L); print "".join(L),'
Đọc tất cả các dòng từ đầu vào tiêu chuẩn, xáo trộn chúng tại chỗ, sau đó in chúng mà không cần thêm một dòng mới kết thúc (chú ý ,
từ cuối).
Đối với OSX, nhị phân được gọi gshuf
.
brew install coreutils
gshuf -o File.txt < File.txt
Nếu giống như tôi, bạn đã đến đây để tìm kiếm một thay thế shuf
cho macOS thì hãy sử dụng randomize-lines
.
Cài đặt randomize-lines
gói (homebrew), có rl
lệnh có chức năng tương tự shuf
.
brew install randomize-lines
Usage: rl [OPTION]... [FILE]...
Randomize the lines of a file (or stdin).
-c, --count=N select N lines from the file
-r, --reselect lines may be selected multiple times
-o, --output=FILE
send output to file
-d, --delimiter=DELIM
specify line delimiter (one character)
-0, --null set line delimiter to null character
(useful with find -print0)
-n, --line-number
print line number with output lines
-q, --quiet, --silent
do not output any errors or warnings
-h, --help display this help and exit
-V, --version output version information and exit
Tôi đã quên nơi tôi tìm thấy cái này, nhưng đây là shuffle.pl
cái tôi sử dụng:
#!/usr/bin/perl -w
# @(#) randomize Effectively _unsort_ a text file into random order.
# 96.02.26 / drl.
# Based on Programming Perl, p 245, "Selecting random element ..."
# Set the random seed, PP, p 188
srand(time|$$);
# Suck in everything in the file.
@a = <>;
# Get random lines, write 'em out, mark 'em done.
while ( @a ) {
$choice = splice(@a, rand @a, 1);
print $choice;
}
Ít nhất là trong Ubuntu, có một chương trình gọi là shuf
shuf file.txt