題 在OSX上相當於gnu`sort -R`?


GNU sort 文本實用程序具有非標準功能 -R 隨機化輸入行的選項。

OSX sort 沒有這個擴展名。在另一個文本過濾器中是否有類似的功能?


34
2017-09-11 20:48


起源




答案:


如果需要,可以安裝GNU sort 通過GNU的 的coreutils 打包過來 家釀,這是OS X的包管理器。

運行它會安裝Homebrew。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然後按照安裝說明進行操作。安裝Homebrew後,運行

brew install coreutils

這將安裝GNU排序為 gsort,所以你可以像使用它一樣 sort 在任何GNU Linux上。


或者,看看這些Stack Overflow問題,其中提到了幾種方法:

如何使用Redhat Linux上的標準工具隨機化文件中的行
如何在Unix命令行中對文本文件的行進行洗牌?

或者看看這個commandlinefu.com頁面:

隨機化行(與|排序相反)


47
2017-09-11 21:02



自製選項有效,鏈接的awk或perl結構也是如此(雖然我認為它們較慢。)其餘的都沒有,因為它們只是GNU。 - phs


在OS X上,如果你不想安裝自製軟件(但你真的應該),你可以使用 perl 要么 ruby

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

要么

ruby -e 'puts STDIN.readlines.shuffle'

5
2018-05-17 21:56





使用 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

資源: 如何在vim中清理列表?


0
2018-05-17 22:29





你可以安裝 rl 通過自製軟件命令(brew install randomize-lines)。

它非常快,並且可以選擇限制返回的項目數,以及指定分隔符(例如,空格而不是換行符)。

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


0
2017-07-26 08:04