Instalar shuf en OS X?

49

Ubuntu Linux tiene una gran herramienta llamada shuf, que funciona como head excepto que te da diez líneas aleatorias. No pude encontrarlo en Homebrew. ¿Cuál es la forma más sencilla de instalarlo en OS X?

El gato no divertido
fuente
2
Es parte del paquete de utilidades de texto GNU. Parece ser parte de coreutils, pero no sé cómo se empaquetan las cosas en homebrew.
jl8e

Respuestas:

78

Puede instalar coreutils con brew install coreutils.

shufse vinculará como gshuf. Lea las advertencias cuando instale coreutils.

Jay Thompson
fuente
2
La advertencia parece ser que no debes usar los nombres propios de las herramientas, sino prefijarlas con g (como "gshuf"), ¿verdad?
The Unfun Cat
2
Sí, u opcionalmente configure su RUTA para que obtenga lo que espera.
Jay Thompson
3
brew install coreutilsinstala las utilidades con el prefijo gpredeterminado en osx, por lo que puede instalarlo utilizando el comando anterior.
Brad Parks
13

Otra solución más es aprender sobre las herramientas proporcionadas por el proveedor. Ciertamente, usted podría cadena jot, paste, sort, cut, heady obtener los mismos resultados.

jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
  • jot produce un número aleatorio del 1 al número de líneas en FILE para cada línea
  • pegar pega el número aleatorio a cada línea en ARCHIVO
  • ordenar ordena numérico cada línea
  • cortar elimina el número aleatorio de cada línea
  • la cabeza emite las primeras 10 líneas
fd0
fuente
2
Realmente me gusta la esencia de esta respuesta, nunca se sabe cuándo es posible que desee hacer lo mismo en otra máquina donde no puede instalar herramientas adicionales por el motivo que sea
forquare
Nunca había escuchado sobre eso jotantes. Gracias por ampliar mi conocimiento.
tommy.carstensen
9

Puede instalar coreutils con Macports como

sudo port install coreutils

Esto pondrá las utilidades principales de GNU en / opt / local / bin con ag antepuesto

p.ej gshuf

usuario151019
fuente
2
Usé este con macports, gracias. No me gusta mucho Homebrew
Zorgatone
Gran respuesta si tienes derechos de sudo. Yo no.
tommy.carstensen
@ tommy.carstensen Luego pregúntale a tu administrador: te habrán dificultado hacer esto por una razón
usuario151019
3

Otra opción es instalar el randomize-linespaquete (homebrew), que tiene un rlcomando que tiene una funcionalidad similar a shuf.

Usage: rl [OPTION]... [FILE]...
Randomize the lines of a file (or stdin).

  -c, --count=N  select N lines from the file
  -r, --reselect lines may be selected multiple times
  -o, --output=FILE
                 send output to file
  -d, --delimiter=DELIM
                 specify line delimiter (one character)
  -0, --null     set line delimiter to null character
                 (useful with find -print0)
  -n, --line-number
                 print line number with output lines
  -q, --quiet, --silent
                 do not output any errors or warnings
  -h, --help     display this help and exit
  -V, --version  output version information and exit
rogerdpack
fuente