#!/bin/bash #Copyright 2003 William Stearns #Released under the GPL #Special handling for ' / ` \ #digits and % & # are all left until the end so we don't accidentally create new escape sequences #Come back and do octal someday perhaps sed \ -e 's/ */ /g' \ -e 's/!*/!/g' \ -e 's/"*/"/g' \ -e 's/$*/$/g' \ -e "s/'*/'/g" \ -e 's/(*/(/g' \ -e 's/)*/)/g' \ -e 's/**/*/g' \ -e 's/+*/+/g' \ -e 's/,*/,/g' \ -e 's/-*/-/g' \ -e 's/.*/./g' \ -e 's@/*@/@g' \ -e 's/:*/:/g' \ -e 's/;*/;/g' \ -e 's/<*//g' \ -e 's/?*/?/g' \ -e 's/@*/@/g' \ -e 's/A*/A/g' \ -e 's/B*/B/g' \ -e 's/C*/C/g' \ -e 's/D*/D/g' \ -e 's/E*/E/g' \ -e 's/F*/F/g' \ -e 's/G*/G/g' \ -e 's/H*/H/g' \ -e 's/I*/I/g' \ -e 's/J*/J/g' \ -e 's/K*/K/g' \ -e 's/L*/L/g' \ -e 's/M*/M/g' \ -e 's/N*/N/g' \ -e 's/O*/O/g' \ -e 's/P*/P/g' \ -e 's/Q*/Q/g' \ -e 's/R*/R/g' \ -e 's/S*/S/g' \ -e 's/T*/T/g' \ -e 's/U*/U/g' \ -e 's/V*/V/g' \ -e 's/W*/W/g' \ -e 's/X*/X/g' \ -e 's/Y*/Y/g' \ -e 's/Z*/Z/g' \ -e 's/[*/[/g' \ -e 's/\*/\\/g' \ -e 's/]*/]/g' \ -e 's/^*/^/g' \ -e 's/_*/_/g' \ -e 's/`*/\`/g' \ -e 's/a*/a/g' \ -e 's/b*/b/g' \ -e 's/c*/c/g' \ -e 's/ */ /g' \ -e 's/!*/!/g' \ -e 's/"*/"/g' \ -e 's/$*/$/g' \ -e "s/'*/'/g" \ -e 's/(*/(/g' \ -e 's/)*/)/g' \ -e 's/**/*/g' \ -e 's/+*/+/g' \ -e 's/,*/,/g' \ -e 's/-*/-/g' \ -e 's/.*/./g' \ -e 's@/*@/@g' \ -e 's/:*/:/g' \ -e 's/;*/;/g' \ -e 's/<*//g' \ -e 's/?*/?/g' \ -e 's/@*/@/g' \ -e 's/A*/A/g' \ -e 's/B*/B/g' \ -e 's/C*/C/g' \ -e 's/D*/D/g' \ -e 's/E*/E/g' \ -e 's/F*/F/g' \ -e 's/G*/G/g' \ -e 's/H*/H/g' \ -e 's/I*/I/g' \ -e 's/J*/J/g' \ -e 's/K*/K/g' \ -e 's/L*/L/g' \ -e 's/M*/M/g' \ -e 's/N*/N/g' \ -e 's/O*/O/g' \ -e 's/P*/P/g' \ -e 's/Q*/Q/g' \ -e 's/R*/R/g' \ -e 's/S*/S/g' \ -e 's/T*/T/g' \ -e 's/U*/U/g' \ -e 's/V*/V/g' \ -e 's/W*/W/g' \ -e 's/X*/X/g' \ -e 's/Y*/Y/g' \ -e 's/Z*/Z/g' \ -e 's/[*/[/g' \ -e 's/\*/\\/g' \ -e 's/]*/]/g' \ -e 's/^*/^/g' \ -e 's/_*/_/g' \ -e 's/`*/\`/g' \ -e 's/a*/a/g' \ -e 's/b*/b/g' \ -e 's/c*/c/g' \ -e 's/d*/d/g' \ -e 's/e*/e/g' \ -e 's/f*/f/g' \ -e 's/g*/g/g' \ -e 's/h*/h/g' \ -e 's/i*/i/g' \ -e 's/j*/j/g' \ -e 's/k*/k/g' \ -e 's/l*/l/g' \ -e 's/m*/m/g' \ -e 's/n*/n/g' \ -e 's/o*/o/g' \ -e 's/p*/p/g' \ -e 's/q*/q/g' \ -e 's/r*/r/g' \ -e 's/s*/s/g' \ -e 's/t*/t/g' \ -e 's/u*/u/g' \ -e 's/v*/v/g' \ -e 's/w*/w/g' \ -e 's/x*/x/g' \ -e 's/y*/y/g' \ -e 's/z*/z/g' \ -e 's/{*/{/g' \ -e 's/|*/|/g' \ -e 's/}*/}/g' \ -e 's/~*/~/g' \ -e 's/%20/ /g' \ -e 's/%21/!/g' \ -e 's/%22/"/g' \ -e 's/%24/$/g' \ -e "s/%27/'/g" \ -e 's/%28/(/g' \ -e 's/%29/)/g' \ -e 's/%2[Aa]/*/g' \ -e 's/%2[Bb]/+/g' \ -e 's/%2[Cc]/,/g' \ -e 's/%2[Dd]/-/g' \ -e 's/%2[Ee]/./g' \ -e 's@%2[Ff]@/@g' \ -e 's/%3[Aa]/:/g' \ -e 's/%3[Bb]/;/g' \ -e 's/%3[Cc]//g' \ -e 's/%3[Ff]/?/g' \ -e 's/%40/@/g' \ -e 's/%41/A/g' \ -e 's/%42/B/g' \ -e 's/%43/C/g' \ -e 's/%44/D/g' \ -e 's/%45/E/g' \ -e 's/%46/F/g' \ -e 's/%47/G/g' \ -e 's/%48/H/g' \ -e 's/%49/I/g' \ -e 's/%4[Aa]/J/g' \ -e 's/%4[Bb]/K/g' \ -e 's/%4[Cc]/L/g' \ -e 's/%4[Dd]/M/g' \ -e 's/%4[Ee]/N/g' \ -e 's/%4[Ff]/O/g' \ -e 's/%50/P/g' \ -e 's/%51/Q/g' \ -e 's/%52/R/g' \ -e 's/%53/S/g' \ -e 's/%54/T/g' \ -e 's/%55/U/g' \ -e 's/%56/V/g' \ -e 's/%57/W/g' \ -e 's/%58/X/g' \ -e 's/%59/Y/g' \ -e 's/%5[Aa]/Z/g' \ -e 's/%5[Bb]/[/g' \ -e 's/%5[Cc]/\\/g' \ -e 's/%5[Dd]/]/g' \ -e 's/%5[Ee]/^/g' \ -e 's/%5[Ff]/_/g' \ -e 's/%60/\`/g' \ -e 's/%61/a/g' \ -e 's/%62/b/g' \ -e 's/%63/c/g' \ -e 's/%64/d/g' \ -e 's/%65/e/g' \ -e 's/%66/f/g' \ -e 's/%67/g/g' \ -e 's/%68/h/g' \ -e 's/%69/i/g' \ -e 's/%6[Aa]/j/g' \ -e 's/%6[Bb]/k/g' \ -e 's/%6[Cc]/l/g' \ -e 's/%6[Dd]/m/g' \ -e 's/%6[Ee]/n/g' \ -e 's/%6[Ff]/o/g' \ -e 's/%70/p/g' \ -e 's/%71/q/g' \ -e 's/%72/r/g' \ -e 's/%73/s/g' \ -e 's/%74/t/g' \ -e 's/%75/u/g' \ -e 's/%76/v/g' \ -e 's/%77/w/g' \ -e 's/%78/x/g' \ -e 's/%79/y/g' \ -e 's/%7[Aa]/z/g' \ -e 's/%7[Bb]/{/g' \ -e 's/%7[Cc]/|/g' \ -e 's/%7[Dd]/}/g' \ -e 's/%7[Ee]/~/g' \ -e 's/0*/0/g' \ -e 's/1*/1/g' \ -e 's/2*/2/g' \ -e 's/3*/3/g' \ -e 's/4*/4/g' \ -e 's/5*/5/g' \ -e 's/6*/6/g' \ -e 's/7*/7/g' \ -e 's/8*/8/g' \ -e 's/9*/9/g' \ -e 's/0*/0/g' \ -e 's/1*/1/g' \ -e 's/2*/2/g' \ -e 's/3*/3/g' \ -e 's/4*/4/g' \ -e 's/5*/5/g' \ -e 's/6*/6/g' \ -e 's/7*/7/g' \ -e 's/8*/8/g' \ -e 's/9*/9/g' \ -e 's/%30/0/g' \ -e 's/%31/1/g' \ -e 's/%32/2/g' \ -e 's/%33/3/g' \ -e 's/%34/4/g' \ -e 's/%35/5/g' \ -e 's/%36/6/g' \ -e 's/%37/7/g' \ -e 's/%38/8/g' \ -e 's/%39/9/g' \ -e 's/%*/%/g' \ -e 's/%25/%/g' \ -e 's/#*/#/g' \ -e 's/%23/#/g' \ -e 's/&*/&/g' \ -e 's/%26/&/g' #Not handled yet. #000 0 00 NUL '\0' #001 1 01 SOH #002 2 02 STX #003 3 03 ETX #004 4 04 EOT #005 5 05 ENQ #006 6 06 ACK #007 7 07 BEL '\a' #010 8 08 BS '\b' #011 9 09 HT '\t' #012 10 0A LF '\n' #013 11 0B VT '\v' #014 12 0C FF '\f' #015 13 0D CR '\r' #016 14 0E SO #017 15 0F SI #020 16 10 DLE #021 17 11 DC1 #022 18 12 DC2 #023 19 13 DC3 #024 20 14 DC4 #025 21 15 NAK #026 22 16 SYN #027 23 17 ETB #030 24 18 CAN #031 25 19 EM #032 26 1A SUB #033 27 1B ESC #034 28 1C FS #035 29 1D GS #036 30 1E RS #037 31 1F US #177 127 7F DEL