rl1
Randomize lines.
Usage
rl [OPTION] ...
[FILE] ...
Overview
rl reads lines from a input file or stdin, randomizes the lines and outputs a specified number of lines. It does this with only a single pass over the input while trying to use as little memory as possible.
-
-c, --count=N -
Select the number of lines to be returned in the output. If this argument is omitted all the lines in the file will be returned in random order. If the input contains less lines than specified and the --reselect option below is not specified a warning is printed and all lines are returned in random order.
-
-r, --reselect -
When using this option a single line may be selected multiple times. The default behaviour is that any input line will only be selected once. This option makes it possible to specify a --count option with more lines than the file actually holds.
-
-o, --output=FILE -
Send randomized lines to FILE instead of stdout.
-
-d, --delimiter=DELIM -
Use specified character as a "line" delimiter instead of the newline character.
-
-0, --null -
Input lines are terminated by a null character. This option is useful to process the output of the GNU find -print0 option.
-
-n, --line-number -
Output lines are numbered with the line number from the input file.
-
-q, --quiet, --silent -
Be quiet about any errors or warnings.
-
-h, --help -
Show short summary of options.
-
-v, --version -
Show version of program.
Examples
Some simple demonstrations of how rl can help you do everyday tasks.
Play a random sound after 4 minutes (perfect for toast):
sleep 240 ; play `find /sounds -name ´*.au´ -print | rl --count=1`
Play the 15 most recent .mp3 files in random order.
ls -c *.mp3 | head -n 15 | rl | xargs --delimiter=´\n´ play
Roll a dice:
seq 6 | rl --count 2
Roll a dice 1000 times and see which number comes up more often:
seq 6 | rl --reselect --count 1000 | sort | uniq -c | sort -n
Shuffle the words of a sentence:
echo -n "The rain in Spain stays mainly in the plain." \
| rl --delimiter=´ ´;echo
Find all movies and play them in random order.
find . -name ´*.avi´ -print0 | rl -0 | xargs -n 1 -0 mplayer
Because -0 is used filenames with spaces (even newlines and other unusual characters) in them work.
Releases
6 releases since Debian 3.1 (Sarge); the text changed 2 times.
--line-number since Debian 4.0 (Etch);
-n since Debian 4.0 (Etch).