![¿Equivalente a gnu `sort -R` en OSX?](https://rvso.com/image/1289074/%C2%BFEquivalente%20a%20gnu%20%60sort%20-R%60%20en%20OSX%3F.png)
La utilidad de texto GNU sort
presenta una opción no estándar -R
para aleatorizar las líneas de entrada.
OSX sort
no tiene esta extensión. ¿Existe una funcionalidad similar disponible en otro filtro de texto?
Respuesta1
Si lo deseas, puedes instalar GNU sort
a través de GNU.coreutilspaquete terminadocerveza casera, que es un administrador de paquetes para OS X.
Ejecutar esto instalaría Homebrew.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Luego simplemente siga las instrucciones de instalación. Cuando Homebrew esté instalado, ejecute
brew install coreutils
Esto instalará GNU ordenado como gsort
, para que puedas usarlo como sort
en cualquier GNU Linux.
Alternativamente, eche un vistazo a estas preguntas de Stack Overflow, que mencionan un par de métodos:
¿Cómo puedo aleatorizar las líneas en un archivo usando herramientas estándar en Redhat Linux?
¿Cómo puedo mezclar las líneas de un archivo de texto en la línea de comando de Unix?
O eche un vistazo a esta página de commandlinefu.com:
Respuesta2
En OS X, si no quieres instalar homebrew (pero realmente deberías hacerlo), puedes usar perl
o ruby
:
perl -MList::Util -e 'print List::Util::shuffle <>'
o
ruby -e 'puts STDIN.readlines.shuffle'
Respuesta3
Utilice shuf
o sort
desde coreutils
el paquete, pero luego deberá agregarlo /usr/local/bin
a su archivo PATH
de entrada ~/.bashrc
, por ejemplo:
export PATH=/usr/local/sbin:/usr/local/bin:$PATH
Alternativamente puedes probar ex
:
ex -s +"%s/^/\=reltimestr(reltime())[-2:].' '" +"sort n" +"%s/^\S* //" +%p -cq! /dev/stdin
Respuesta4
Puede instalar el rl
comando a través de homebrew ( brew install randomize-lines
).
Es bastante rápido y tiene opciones para limitar la cantidad de elementos devueltos, así como especificar el delimitador (espacio en lugar de avance de línea, por ejemplo).
(Ver tambiénhttps://stackoverflow.com/a/42056195/43615.)