#n #!/bin/sed -f # Sort, partition, and number a list of names in only 14 sed commands. # By Greg Ubben, 14 Nov 1996 # # Use with -n option to prevent a trailing blank line. # Assumes no control characters, even though the sort handles tabs. # Sed insertion sort by Greg Ubben, 26 April 1989. All rights reserved. # Note that the code contains some unprintable Ctrl-A and Tab characters. # The \(\(.\)\) have been unnested to allow for some brain-damaged seds. # Some overlap with next; s:/:/.: the last command for a stand-alone sort. G 1 s/\n/&& !"#$%\&'()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~/ s/\([ -~]*\)\(\n\)/\2\1/ s/^\(.[ -~]*\)\([ -~]\)\([ -~]*\)\(.*\1\)\([ -~]\)\([ -~]*\)\(.*\n.*\5[ -~]*\2[ -~]*\)$/\4\5\6\1\2\3\7/ h $ !d s///g s/\(.*\)\n.*/\1/ # Output, adding a blank line between sections and numbering each section. # The do-nothing X* below is needed on the SunOS 4.1 sed to work around a # RE bug that occurs when a non-null c* closure precedes a null \n recall. :loop s/\([0-9]*\)[ -~]*\n/\1;9876543210990090 / s/\([0-8]\{0,1\}\)\(9*\);[^1]*\(.\)\1[0-9]*X*\2\(0*\)[^ ]*/\3\4/ P /^[0-9]* \(.\).*\n\1/ !s/[ -~]*// /^\n/ P /./ b loop ### colorized by sedsed, a debugger and code formatter for sed scripts