Equivalente di gnu `sort -R` su OSX?


37

L' sortutilità di testo GNU presenta -Run'opzione non standard per randomizzare le righe di input.

OSX sortnon ha questa estensione. Esiste una funzionalità simile disponibile in un altro filtro di testo?

Risposte:


50

Se lo desideri, puoi installare GNU sorttramite il pacchetto coreutils di GNU su Homebrew , che è un gestore di pacchetti per OS X.

L'esecuzione di questo installerebbe Homebrew.

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

Quindi basta seguire le istruzioni di installazione. Quando è installato Homebrew, esegui

brew install coreutils

Questo installerà l'ordinamento GNU come gsort, quindi puoi usarlo come sortsu qualsiasi GNU Linux.


In alternativa, dai un'occhiata a queste domande di Stack Overflow, che menzionano un paio di metodi:

Come posso randomizzare le linee in un file usando uno strumento standard su Redhat Linux
Come posso mescolare le linee di un file di testo nella riga di comando di Unix?

O dai un'occhiata a questa pagina commandlinefu.com:

Randomizza le linee (al contrario di | ordina)


L'opzione homebrew funziona, così come le costruzioni awk o perl collegate (anche se immagino che siano più lente). Il resto non va, dato che sono solo GNU.
phs,

7

Su OS X, se non vuoi installare homebrew (ma dovresti davvero), puoi usare perlo ruby:

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

o

ruby -e 'puts STDIN.readlines.shuffle'

0

Usa shufo sortdal coreutilspacchetto, ma poi hai da aggiungere /usr/local/binal vostro PATHnel ~/.bashrcfile, ad esempio:

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

In alternativa puoi provare ex:

ex -s +"%s/^/\=reltimestr(reltime())[-2:].' '" +"sort n" +"%s/^\S* //" +%p -cq! /dev/stdin

Fonte: Come mescolare un elenco in VIM?


0

È possibile installare il rlcomando tramite homebrew ( brew install randomize-lines).

È abbastanza veloce e ha opzioni per limitare il numero di articoli restituiti, oltre a specificare il delimitatore (spazio invece del feed di linea, ad esempio).

(Vedi anche https://stackoverflow.com/a/42056195/43615 .)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.