1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<html>
<head><meta name="Generator" content="sedsed --htmlize">
<title>Colorized sodelnum.gnu.sed</title></head>
<body bgcolor="#000000" text="#ffffff"
link="#ff00ff" alink="#ff00ff" vlink="#ff00ff">
<pre>
<font color="#00ffff"><b>#n</b></font>
<font color="#00ffff"><b>#! /bin/sed -nf</b></font>
<font color="#00ffff"><b>#----------------- gather the lines in hold space</b></font>
<font color="#ffff00"><b>H</b></font>
<font color="#8080ff"><b>$</b></font> <font color="#ff6060"><b>!</b></font><font color="#ffff00"><b>b</b></font>
<font color="#00ffff"><b>#----------------- sort them</b></font>
<font color="#00ffff"><b># Append a new-line and the look-up table to hold space, get everything</b></font>
<font color="#00ffff"><b># in pattern space</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>.*</b></font><font color="#ff6060"><b>/</b></font>° !"#$%\<font color="#00ff00"><b>&</b></font>'()*+,-.\/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>H</b></font>
<font color="#ffff00"><b>g</b></font>
<font color="#ffff00"><b>t</b></font> <a href="#sort">sort</a>
<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="sort">sort</a></b></font>
<font color="#00ffff"><b># This regexp performs an insertion sort pass!!!</b></font>
<font color="#00ffff"><b># It searches for two lines with a common (possibly empty) prefix and</b></font>
<font color="#00ffff"><b># compares the first differing char using a lookup table -- if the</b></font>
<font color="#00ffff"><b># order is wrong, the regexp matches and the RHS of the s command</b></font>
<font color="#00ffff"><b># swaps the lines</b></font>
<font color="#00ffff"><b>#</b></font>
<font color="#00ffff"><b># \1 = line after the one to be inserted</b></font>
<font color="#00ffff"><b># \2 = common part to the two lines </b></font>
<font color="#00ffff"><b># \3 = first differing char (in \1) </b></font>
<font color="#00ffff"><b># \4 = lines between the two lines </b></font>
<font color="#00ffff"><b># \5 = line to be inserted </b></font>
<font color="#00ffff"><b># \6 = first differing char (in \5) </b></font>
<font color="#00ffff"><b># \7 = lines after the second line + the lookup table</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>\n\<font color="#ff00ff"><b>(</b></font>[ -~]*\)\<font color="#ff00ff"><b>(</b></font>[ -~]\)[ -~]*\)\<font color="#ff00ff"><b>(</b></font>\n.*\)\?\<font color="#ff00ff"><b>(</b></font>\n\2\<font color="#ff00ff"><b>(</b></font>[ -~]\)[ -~]*\)\<font color="#ff00ff"><b>(</b></font>\n.*°.*\6.*\3\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\5</b></font><font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\4</b></font><font color="#00ff00"><b>\7</b></font><font color="#ff6060"><b>/</b></font>
<font color="#00ffff"><b># 1---------------------------- 4--- 5------------------ 7------------</b></font>
<font color="#00ffff"><b># 2----- 3---- 6----</b></font>
<font color="#ffff00"><b>t</b></font> <a href="#sort">sort</a>
<font color="#00ffff"><b># Remove the last new-line and the lookup table</b></font>
<font color="#00ffff"><b># Leave the leading new-line</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>^\<font color="#ff00ff"><b>(</b></font>.*\)\n°.*$</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#00ffff"><b># ----------------- delimit and number them</b></font>
<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="number">number</a></b></font>
<font color="#00ffff"><b># Remove the first line, move the last number to the beginning of the</b></font>
<font color="#00ffff"><b># new first line together with the lookup table</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>[0-9]*\)[ -~]*\n</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font>;9876543210990090 <font color="#ff6060"><b>/</b></font>
<font color="#00ffff"><b># This regexp does the incrementing -- see tutorials for its explanation</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>[0-8]\{0,1\}\)\<font color="#ff00ff"><b>(</b></font>9*\);[^1]*\<font color="#ff00ff"><b>(</b></font>.\)\1[0-9]*X*\2\<font color="#ff00ff"><b>(</b></font>0*\)[^ ]*</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\3</b></font><font color="#00ff00"><b>\4</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>P</b></font>
<font color="#00ffff"><b># If the first char changes, we replace the first line with</b></font>
<font color="#00ffff"><b># a single new-line character. The pattern space will look the</b></font>
<font color="#00ffff"><b># same as when we leave the sorting section, and the counter</b></font>
<font color="#00ffff"><b># will be restarted.</b></font>
<font color="#00ffff"><b># The leading new-line is printed by the second line, which</b></font>
<font color="#00ffff"><b># can only match if the first did (if it didn't, the first </b></font>
<font color="#00ffff"><b># character will still be a digit).</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>^[0-9]* \<font color="#ff00ff"><b>(</b></font>.\).*\n\1</b></font><font color="#ff6060"><b>/</b></font> <font color="#ff6060"><b>!</b></font><font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>[ -~]*</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>^\n</b></font><font color="#ff6060"><b>/</b></font> <font color="#ffff00"><b>P</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>.</b></font><font color="#ff6060"><b>/</b></font> <font color="#ffff00"><b>b</b></font> <a href="#number">number</a>
<font color="#00ffff"><b>### colorized by <a href="https://aurelio.net/projects/sedsed/">sedsed</a>, a debugger and code formatter for sed scripts</b></font>
</pre></body></html>
|