Install shuf on OS X?
Ubuntu Linux has a great tool called shuf, which works like head except that it gives you ten random lines. I couldn't find it on Homebrew. What is the simplest way of installing it on OS X?
Solution 1:
You can install coreutils with brew install coreutils
.
shuf
will be linked as gshuf
. Read the caveats when you install coreutils.
Solution 2:
Yet another solution is to learn about the tools supplied by the vendor. Certainly you could chain jot
, paste
, sort
, cut
, head
and get the same results.
jot -r "$(wc -l FILE)" 1 |
paste - FILE |
sort -n |
cut -f 2- |
head -n 10
- jot produces a random number from 1 to the number of lines in FILE for each line
- paste pastes the random number to each line in FILE
- sort sorts numeric each line
- cut removes the random number from each line
- head outputs the first 10 lines
Solution 3:
You can install coreutils with Macports as
sudo port install coreutils
This will put GNU core utils in /opt/local/bin with a g prepended
e.g. gshuf
More details on the package coreutils.
Solution 4:
Another option is to install randomize-lines
(homebrew) package, which has an rl
command which has similar functionality to 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
Solution 5:
You can use sort -R
$ seq 5 | sort -R
2
3
4
1
5