随机排列大型文本文件中的行

随机排列大型文本文件中的行

我有一个约 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

如果您像我一样来这里寻找shufmacOS 的替代品,那么请使用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

相关内容