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

FreeBSD Manual Pages


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