rl - Randomize Lines

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.

I wrote rl in my spare time mainly to be able to select a random audio file to
play when my toast is done (script in combination with find and sleep).
Another reason was to familiarize myself with autoconf and friends.

The most recent version of rl can be found at
http://ch.tudelft.nl/~arthur/rl/

Warning: The command line options and default behaviour may change between
releases until a 1.0 release is made.

Another Warning: I have mostly lost interest in this project and am not
planning on doing much development on it any more. I will however still accept
patches and fix important bugs (this more or less contradicts the previous
warning).

Note: Users are recommended to use the shuf command instead which has been
part of GNU coreutils since release 6.0.


COPYRIGHT NOTICE
================

Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Arthur de Jong

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA


INSTALLATION INSTRUCTIONS
=========================

rl should compile fine on most Unix-like operating systems. It is written to
be as portable as possible.

rl is developed on Debian GNU/Linux 4.0 (etch) and unstable (sid) and tested
on Solaris 8 (once in a while), OpenBSD 2.7 (hardly ever) and HP-UX 10 (a long
time ago).

rl uses a configure script to guess build parameters for your system.
Configuration, compilation and installation should be as simple as this:

  % ./configure   (use --help for options)
  % make          (compile)
  % make install  (install)

For more details read the INSTALL file.


DEVELOPMENT STATUS
==================

Development on rl has slowed down a bit because it works good enough for me.
The software is however not yet in such a state that I would be willing to
label it as a final release because the TODO list contains some important
points (mainly the files with a large number of lines).

Since GNU coreutils 6.0 includes a tool 'shuf' that pretty much does the same
thing (and likely works better with large files) the likelihood of a new
release is small.

A quick comparison between rl and shuf indicates that rl uses less CPU time
(about half) while shuf uses less memory (about a quarter).


REPORTING BUGS
==============

If you find any bugs or missing features please send an email to
  arthur@ch.tudelft.nl
Please include as much information as needed. Patches are more than welcome.
