Home > sed   

sed - the stream editor

sed . . . the stream editor

Find here the sed FAQ (Frequently Asked Questions) file, some one-line sed scripts, and a brief introduction to sed. I suggest several "flavors" of sed for DOS/Windows users.

What is sed?

Originally designed for Unix, sed has been available for DOS and other operating systems for many years. Sed is a non-interactive editor that works from a command line; it is not a Windows application with icons or a menu bar. What does it do? sed changes text: deleting, adding, inserting, substituting.

Sed changes blocks of text "on the fly" by using a pre-written list of commands. With sed, you don't open up a screen, push a cursor around, and press DELETE or INSERT or various function keys.

"Hey," you might ask. "Is it just a find-and-replace program? You can find that in any word processor."

Not like this. Sed is very powerful, and you can do things in sed you can't do in any standard word processor, even ones that support "regular expressions". Also, because sed is small and works on a "stream" of text, it can quickly alter files several gigabytes in size.

How it works: You feed sed a script of editing commands (like, "change every line that begins with a colon to such-and-such") and sed sends the altered text to the screen. To save the revisions on disk, use the redirection arrow, >newfile.txt

This sample will change "black" to "white" throughout your file:

         sed "s/black/white/g" input.txt >output.txt

This sample shows how to make sed read a multi-line sed script, myscript.sed, instead of entering multiple commands from the command prompt:

         sed -f myscript.sed input.txt >output.txt

Setting up an environment for sed

Since I expect that most of the visitors to this page will be people who (like me) work in a DOS/Windows environment, I am writing a separate document to explain the effective use of the Command prompt. Read it to avoid frustration and wasted effort on the command prompt.

sed docs by Eric Pement
various sed websites

recommended 32-bit sed binaries for Windows (XP and higher)

All of these versions will run in a DOS window or in a full-screen DOS session under Microsoft Windows.

recommended sed binaries for DOS and 16-bit operating systems (not modern Windows!)

I feel somewhat like a fossil in presenting the table below, as it presents versions of sed that are antique by modern standards and that I would never recommend for general use today. I myself use only two versions of sed under Windows: ssed, because I like having Perl regular expressions available, and gsed 4.2.1. Under Cygwin or in a true Linux environment, I use the latest version of GNU sed available, usually version 4.2.2 or 4.2.1. The following table is presented primarily for historic purposes.

Table of features in DOS and Windows versions of sed
Feature offered: ssed gsed421 gsed407 gsed302.80 gsed302 gsed205 gsed103 csed sedmod sed16 sed15 bsed
Long filenames for Windows 9x, XP, and higher Y Y   Y Y Y Y   N Z1 Z2
represent newline by \n on repl side of s/find/repl/  Y Y   Y N N Y   Y Y Y
represent tabs by \t Y Y   Y N N Y   Y Y Z3
represent hex values by \xHH Y Y   Y N N Y   N Y N
support OR operator with \|, e.g., /blue\|cyan/  Y Y   Y Y Y Y   N N N
support interval expressions like \{m,n\} Y     Y Y Y N   N Z4 Y
support begin~step line selection with M~N Y     Y Y Y N   N N N
"a append-on-same-line" (for a,i, or c commands) Y     Y N N N   Y Y N
flag for N th match in substitution; e.g., s/find/repl/8  Y     Y Y Y Y   N Y  
flag to ignore case in /match/i or s/find/repl/i Y     Y Y N N   Y N N
command-line switch to edit files in-place, as -i Y     Y Y N N   Y N N
command-line switch to copy files if using -i, as -c N Y N N N N N N N N N
command-line switch for extended regexes, as -r Y Y    
command-line switch for Perl regexes, as -R Y N N N N N N N N N N
command-line switch to open files in binary mode, as -b  N Y N N N N N N N N N
unlimited line length or buffer size Y     Y Y Y 64K   4K 4K  
case change with \L, \l, \U, \u, \E, \e Y     N N N N   Y N N
Non-standard extensions or other exceptional features
awk-style word arguments with $1, $2, ... $8, $9 N     N N N N   Y Y N  
can run in MS-DOS mode, fully outside of Windows N     Y Y N N   Y Z9  

1 File SED15X.ZIP does not support Win95 long filenames. However, a version of SED15.EXE compiled with Mingw32 does support long filenames and is available from me, here.
2Berkeley sed docs say that it supports Windows Long Filenames, but it doesn't work under Windows 2000. Not yet tested under Win9x.
3Yes, but only substitutes TAB for \t on the "find" portion, not on the "replace" portion of a s/ubsti/tution/. Undocumented.
4 Interval range of \{0,n\} not supported in sed15.
9 sed15 will run in MS-DOS mode; the version compiled with Mingw32 will not.

mailing list for sed users

If you are interested in learning more about sed (its syntax, using regular expressions, etc.) you are welcome to subscribe to a sed-oriented mailing list. In fact, there are two mailing lists about sed: one in English named sed-users, moderated by Sven Guckes; and one in Portuguese named sed-BR, moderated by Aurelio Marinho Jargas. The average volume of mail for sed-users is about 10 messages a week.

related batch editing files
Console/command-line apps Windows apps

This section has been revised, to remove programs that don't work that well and to recommend better things in their place. If you find things that work better for you, drop me a line to show me your discoveries.

sed debuggers

Obviously, you have to have access to Python and/or a genuine ksh (Korn shell) to run these debuggers. If I ever get a round tuit, I will write a mini-tutorial on using each of these. <smile>

Thanks for visiting. Hope you found what you wanted!

Eric Pement, sed FAQ maintainer
home page: http://www.student.northpark.edu/pemente/

Last modified: 14 Jan 2004, 15:00:04