GNUsort
文本实用程序具有一个非标准-R
选项来随机化输入行。
OSXsort
没有此扩展。其他文本过滤器中是否有类似的功能?
答案1
如果你愿意,你可以sort
通过 GNU 的核心工具包裹结束自制,它是 OS X 的包管理器。
运行此命令将安装 Homebrew。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
然后按照安装说明操作即可。安装 Homebrew 后,运行
brew install coreutils
这将安装 GNU 排序,因此您可以像在任何 GNU Linux 上gsort
一样使用它。sort
或者,看看这些 Stack Overflow 问题,其中提到了几种方法:
如何使用 Redhat Linux 上的标准工具随机化文件中的行
如何在 Unix 命令行中随机排列文本文件的行?
或者看看这个 commandlinefu.com 页面:
答案2
在 OS X 上,如果你不想安装 homebrew(但你确实应该安装),你可以使用perl
或ruby
:
perl -MList::Util -e 'print List::Util::shuffle <>'
或者
ruby -e 'puts STDIN.readlines.shuffle'
答案3
使用shuf
或sort
来自coreutils
包,但随后您必须添加/usr/local/bin
到您的文件PATH
中~/.bashrc
,例如:
export PATH=/usr/local/sbin:/usr/local/bin:$PATH
或者您可以尝试ex
:
ex -s +"%s/^/\=reltimestr(reltime())[-2:].' '" +"sort n" +"%s/^\S* //" +%p -cq! /dev/stdin
答案4
您可以rl
通过 homebrew ( brew install randomize-lines
) 安装该命令。
它非常快,并且可以选择限制返回的项目的数量,以及指定分隔符(例如,用空格而不是换行符)。