Skip site navigation (1)Skip section navigation (2)

FreeBSD Man Pages

Man Page or Keyword Search:
Man Architecture
Apropos Keyword Search (all sections) Output format
home | help
rl(1)                            User Commands                           rl(1)

       rl - Randomize Lines.

       rl [OPTION]...  [FILE]...

       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

       -q, --quiet, --silent
              Be quiet about any errors or warnings.

       -h, --help
              Show short summary of options.

       -v, --version
              Show version of program.

       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.

       The program currently does not have very smart memory management.  If
       you feed it huge files and expect it to fully randomize all lines it
       will completely read the file in memory. If you specify the --count
       option it will only use the memory required for storing the specified
       number of lines.  Improvements on this area are on the TODO list.

       The program uses the rand() system random function.  This function
       returns a number between 0 and RAND_MAX, which may not be very large on
       some systems.  This will result in non-random results for files
       containing more lines than RAND_MAX.

       Note that if you specify multiple input files they are randomized per
       file.  This is a different result from when you cat all the files and
       pipe the result into rl.

       Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Arthur de
       This is free software; see the license for copying conditions.  There
       is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A

Version 0.2.7                      Jul 2008                              rl(1)


Want to link to this manual page? Use this URL:

home | help