随机打乱大文本文件中的行

ddm*_*ael 12 text-editing awk macos

我有一个大约 1GB 的文本文件,大约有 6k 行(每行很长),我需要随机洗牌它的行。是否可以?可能用awk?

Sur*_*ani 21

您可以使用shuf来自GNU coreutils的命令。该实用程序速度非常快,洗牌 1 GB 文件所需的时间不到一分钟。

下面的命令可能只适用于您的情况,因为shuf将在打开输出文件之前读取完整的输入:

$ shuf -o File.txt < File.txt
Run Code Online (Sandbox Code Playgroud)

  • @ddmichael 运行 `brew install coreutils` 并使用 `/usr/local/bin/gshuf`。 (6认同)
  • @ddmichael 或者,对于 OS X,您可以使用这个 Perl one liner。得到了这个旧博客之一。做了一个快速测试,发现工作正常。`猫我的文件| perl -MList::Util=shuffle -e 'print shuffle(&lt;STDIN&gt;);'` _我很确定它运行的速度有多快_ (2认同)