[AMG]: unsort is a simple UNIXy stdin->stdout pipeline tool for randomizing line order. It's simple, works quite nicely, and is surprisingly useful. Without further ado, I present to you the source: #!/bin/sh # \ exec tclsh "$0" "$@" proc main {} { set lines [list] foreach line [lrange [split [read stdin] \n] 0 end-1] { lappend lines [list [expr {rand()}] $line] } foreach line [lsort -real -index 0 $lines] { puts [lindex $line 1] } } main # vim: set ts=4 sts=4 sw=4 tw=80 et ft=tcl: Even though the above really is good enough, I'm still interested in seeing performance improvements. Any ideas? ---- Let's give it a try, shall we? [andy@blender|~/devel/misc]$ unsort < alpha > bravo > charlie > delta > EOF charlie bravo delta alpha ---- I usually use unsort for creating a randomized playlist: [andy@blender|~]$ mplayer $(find ~/media/music -type f | unsort) Works great! I'm using it right now, as a matter of fact. ---- [[ Under which category should this page be filed? ]]