= Some Sed Links INTRO This page contains some information and links about the sed editor Sed stands for 'stream editor' and is a way of 'editing' text files. Sed grew and lives in the Unix world. It has two close cousins; Grep and Awk. Awk in some ways is an enhanced sed, but is also designed for a slightly different purpose. My only reservation about Awk is that string substitutions do not seem as easy as in Sed. Sed is essentially an extremely small and simple but elegant programming language. For example, in Sed only two variables are allowed: the 'hold-space' variable, and the 'pattern-space' variable. In sed there is only one conditional statement 'if', and only one conditional operator 'matches' (and 'does not match'). In Sed only one type of iteration is allowed, and that is the iteration over lines in a text file in sequential order. All these limitations may make it sound as if it would be difficult to do anything useful in Sed, but that is not the case. This is owing to sed's 'understanding' of 'regular expressions' or search patterns (as they are often called in the Microsoft World). Because Sed is such a restricted language, many things cat be 'omitted' or left implicit in a sed program. For example, the following is a Sed program: "/^b/ {h;s/5/6/g;}" What this actually means in terms of more normal programming languages, is the following (I am using a kind of 'pseudo code' here) OPEN a file for reading for each (line in the current-file) do SET the-hold-space = the-current-line SET the-pattern-space = the-current-line if (the line) MATCHES (the first character is a 'b') then SET the-pattern-space = [SUBSTITUTE all '5's with '6's in the-current-line] PRINT the-pattern-space TO THE SCREEN endif done As can be seen, quite a lot of 'pseudo code' is required in order to represent a very small 'sed' program. NOTES Using gnu sed version 3.02.8 (NOT 3.02) you can insert new-line characters in the right hand side of the sed replacement expression. (\n). Also you can use the notation \xnn for hex code replacement. 3.02 does not have these features. LINKS http://www-106.ibm.com/developerworks/linux/library/l-sed3.html A nice, reasonably advanced sed tutorial with scripts and explanations of why they work. Also an explanation of hold and pattern spaces. thankyou. This also contains a link to the latest version of GNU sed (3.02.8). http://www.student.northpark.edu/pemente/sed/index.htm http://www.cornerstonemag.com/sed/ Pretty much the SED 'home' page. Includes and FAQ to html conversion script (which does hyperlink the table of contents and appears to 'chunk' the HTML but this script does not appear to be the one eric acually uses to make his FAQ) This site is quite Microsoft Windows oriented. This site may not always be available. http://sed.sourceforge.net/ Another important sed site. Good sed links. Lots of advanced sed scripts including a comprehensive HTML entity to 'iso' script, a hyper-link url extracting script ... ALSO an 'iso2html' script which does what my 'html-entities.sh' script does but better (since it doesn't have to use the 'echo' command). http://sed.sourceforge.net/grabbag/ More scripts http://www.student.northpark.edu/pemente/sed/sedfaq.html The very good seq faq. This is very detailed and scholarly although many of the links may be out of date. This page contains some nice CSS styles for formatting the headings. And the FAQ appears to have been produced with a reasonably 'clean' script (but I dont know what the script is). Section 4.7 deals with control characters and special characters (such as accented characters). The CSS styles should be useable for my own sed scripts. http://www.student.northpark.edu/pemente/sed/bookindx.txt A book indexing sed script by the FAQ man. http://main.rtfiber.com.tw/~changyj/sed/ An actively maintained (april 2003) and swish looking SED site. Good swish HTML using style sheets. http://www.gnu.org/manual/sed-3.02/sed.html The gnu manuals for Gnu Sed. This is not particularly thorough and does not contain any examples. http://www.urc.bl.ac.yu/manuals/progunix/sed.txt An old but reasonably thorough manual. Some examples. No table of contents. http://www.dbnet.ece.ntua.gr/~george/sed/OLD/1liners.txt Some one line sed scripts, including an example of replacing a 'hex coded' value (which probably DOESNT work in GNU sed) and some other quite tricky scripts Some important SED people Al Aab # "seders" list moderator Yiorgos Adamopoulos Dale Dougherty # author of "sed & awk" Carlos Duarte # author of "do it with sed" Eric Pement # author of this document Ken Pizzini # author of GNU sed v3.02 S.G.Ravenhall # great de-html script Greg Ubben # many contributions & much hel Jeffrey Friedl A regular expression guru http://www.dbnet.ece.ntua.gr/~george/sed/OLD/sedtut_1.html Another, fairly good sed tutorial. http://www.dbnet.ece.ntua.gr/~george/sed/OLD/ Links to other sed stuff, including a text file 'indexing' script. CONVERTING SED TO OTHER THINGS As much as I like sed, as times it would be useful to have sed scripts in other languages. Since sed mainly consists of regular expressions and substitutions, which are implemented in many language, it would seem not too difficult to convert a sed script to something else. http://sedsed.sourceforge.net/README A sed code beautifier, indenter and HTMLiser. Written in the python language. It also does 'tokenizing' which may be half way to parsing MISCELANEOUS echo -e "\121" This echos a capital q (Q) to standard out. echo "QQ" | sed 's/'$(echo -e "\121")'/x/g' This changes all occuraces of Q into x. 121 is the octal code for Q. We can use the to SED for special characters. This is necessary because I only have the 3.02 version of sed, not the 3.02.8 version (which supports the \xnn notation) Below is a sed line which creates a script file which will HTML entitize files which contain accented characters etc. cat html-entities.sh | expand | tr -s ' ' | tr ' ' '\n' | sed -n "/^\".[0-9]/{N;s/\n/ /g;p;}" | sed "s/\(\"[^\"]\+\"\),[ ]*\"\([^\"]\+\)\".*/sed 's|'\$(echo \-e \1)'|\2|g' /g" | less http://wuarchive.wustl.edu/mirrors/NetBSD/NetBSD-current/pkgsrc/textproc/README.html A page containing a link to a catalan dictionary for Ispell http://dataconv.org/apps_source.html A page with a link to a Awk to C translator. JAD is a java decompiler 'masterplant' is stated to be an automatic parser which generates xml style code. http://www.cs.rit.edu/~afb/20013/plc/slides/perlintro.html A perl tutorial. Some simple examples. Swish HTML