我有一个约 1GB 大小的文本文件,大约有 6k 行(每行很长),我需要随机打乱行顺序。可以吗?可以用 awk 吗?
答案1
您可以使用shuf
命令来自GNU 核心实用程序。该实用程序速度非常快,只需不到一分钟即可重新排列 1 GB 的文件。
下面的命令可能适合您的情况,因为shuf
它会在打开输出文件之前读取完整的输入:
$ shuf -o File.txt < File.txt
答案2
Python 3 单行代码:
python3 -c "import sys, random; L = sys.stdin.readlines(); random.shuffle(L); print(''.join(L), end='')"
Python 2 单行代码:
python2 -c "import sys, random; L = sys.stdin.readlines(); random.shuffle(L); print ''.join(L),"
从标准输入读取所有行,就地对它们进行打乱,然后打印它们而不添加结束换行符(注意末尾的end=''
或)。,
答案3
如果您像我一样来这里寻找shuf
macOS 的替代品,那么请使用randomize-lines
。
安装randomize-lines
(homebrew)包,它有一个rl
与 有类似功能的命令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
答案4
至少在 ubuntu 中,有一个名为shuf
shuf file.txt