small-sed
by Eric S. Raymond, <esr@snark.thyrsus.com>
and Rene Rebe <rene@exactcode.de>
This is a smaller, cheaper, and faster SED utility. Minix uses it. GNU used
to use it, until they built their own sed around an extended (some would
say over-extended) regexp package and it is used for embedded tasks (for
example by the T2 SDE - http://www.t2-project.org).
The original sed 1.0 was written in three pieces; sed.h, sedcomp.c, sedexec.c.
Some Minix hacker ran them together into a single-file version, mnsed.c which
is not supported and shipped these days; if changes are needed for Minix please
send a patch to the normal source.
The 1.2 version (9 Oct 1996) add mnsed's support for detecting
truncated hold spaces. The mnsed version is missing one feature in
of the 1.2 version; support of +. Also, the multiple-file I/O is
organized slightly differently.
The 1.3 version added a bug fix by Tom Oehser, and the `L' command. Also
this program is now distributed under GPL.
The 1.5 version incooperated a lot of bug fixes by Rene Rebe as well as
a real test suite. Also the function declaration and definition have been
converted from the K&R C to ANSI C.
The 1.6 version includes support for the n'th match for the substitude command
as well as support for predefined character classes and only writes lines
with newline if one was present in the input line (compatible with GNU sed).
The 1.7 version fixed a segmentation fault with empty regular expressions,
not to leak other buffer content for groups of commands and escaping
numerical seperators in regular expressions by disabling obscure code.
Additionally compilation with older compilers as well as warnings with the
latest gcc versions have been corrected.
The 1.8 version fixes matching of some escaped characters (a regression
introduced with \+ star matching), \+ star matching to corretly copy
and mark the internal bytecode representation, back references inside lhs
regular expressions matching (to work at all) and marking the correct
regular expression for star matches.
The 1.9 version included a microoptimization shaving some bytes off the
binary and some cpu cycles at run time, reusing the previous regular
expressions for empty ones, predefined character classes with control
characters, handling of escaped ampesands and support for backreference
\0 and Kleene star operator on groups.
The 1.10 version fixed a special case of grouped star matching where
\+1..n overwrote the last match, not to infinite loop on certain zero match
grouped star cases and not to crash on w(rite to file). The version also
no longer falls into the conservative end-of-file matching mode when just
end-of-line matching was used.
The 1.11 version again fixed w(rite to file) handling to correctly honor
/dev/stdout and /dev/stderr as GNU sed does and thus keep the streams in
sync. Some unused variables have been removed and a two diagnostics
fixed to be printed correctly.
The 1.12 version fixed the l(ist) command to actually work, some tiny
optimizations have been performed as well as some more compiler warnings
fixed.
Makefile -- how to build sed
sed.h -- declarations and structures
sedcomp.c -- sed pattern compilation
sedexec.c -- sed program execution
sed.1 -- source for the man page
tests/ -- a small set of sed tests
For some releases the man page in the man format.
Surf to
http://www.exactcode.de/oss/minised/
http://www.catb.org/~esr/
for updates of this software. There is a sed FAQ kept at these
locations:
http://www.dreamwvr.com/sed-info/sed-faq.html