与 OSX 上的 gnu `sort -R` 等效吗?

与 OSX 上的 gnu `sort -R` 等效吗?

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(但你确实应该安装),你可以使用perlruby

perl -MList::Util -e 'print List::Util::shuffle <>'

或者

ruby -e 'puts STDIN.readlines.shuffle'

答案3

使用shufsort来自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

来源:如何在 vim 中随机排列列表?

答案4

您可以rl通过 homebrew ( brew install randomize-lines) 安装该命令。

它非常快,并且可以选择限制返回的项目的数量,以及指定分隔符(例如,用空格而不是换行符)。

(也可以看看https://stackoverflow.com/a/42056195/43615

相关内容