!!!ED Editor

ed is the standard line oriented editor available on all Unix / Linux systems.  It also comes with Mac OS/X, and is available for Windows.

ed is a line oriented editor (as apposed to a screen oriented editor).  It requires no graphics and works on text one line at a time.

To evoke ed you use:  {{{ed myfile.txt}}}

Note, the stuff in the () below represents a range of lines to be operated on.  The stuff shown in the parenthesis is the default - what is used if you don't include an address range.  If you do include it, don't use the parenthesis.


!!ed commands

!!Save and quit commands

|(1,$)w |			write (save) file
|(1,$)wq 	|		write and quit
|(1,$)w FILE|			write (save) to new file
|(1,$)wq FILE	|		write to new file and quit
|q|				quit
|Q|				quit - ignore changes
|e FILE	|			edit new file (erase prior contents)
|E FILE	|			edit new file even of old file changed
|f FILE	|			change current file name to FILE
|($)r FILE|			read FILE into existing text

!!Displaying text

|(.,.)p	|			print lines
|(.,.)n	|			print lines with line numbers
|(.,.)l	|			list lines (display control characters)

!!Changing the current line

|.|				current line
|N|				goto line N
|$|				last line
|, or %	|			all lines
|.+1|				current line plus 1
|return	|			move to and display next line
|-|				previous line
|+N|				N'th next line
|-N|				N'th previous line
|;|				.,$
|/re/|				find regular expression
|//|				repeat last regular expression
|?re?|				search backwards
|(.)kX|				mark line as X (save position)
|'X|				the line marked as X (used anywhere a line number can be used)
|.=|				display current line number
|=|				display number of lines

ed's regular expression syntax corresponds to grep's basic regular expression syntax.  See [grep]


!!Changing text

|(.)a|				append text after current line (up to end input)
|(.)i|				insert text before current line (up to end input)
|(.,.)c	|			change (replace lines - delete & insert)
|(.,.)d	|			delete lines
|(.,.)s/re/replacement/	|	replace text (once per line)
|(.,.)s/re/replacement/g|		replace text (all per line)
|(.,.)s/re/replacement/N|		replace text (N'th occurrence per line - start at 1)
|(.,.)s	|			repeat last substitution
|.|				end input

!!Misc commands

|(.,.+1)j|			join addressed lines
|(.,.)m(.)|			move lines
|(.,.)t(.)|			copy (transfer) lines

!!Regular expressions

|.|				match any character
|\.|				match period
|x*|				match zero or more x's
|{{{[}}}xyz{{{]}}}|				character class - match x, y, or z
|{{{[}}}a-z{{{]}}}	|			match a through z
|{{{[}}}^xyz{{{]}}}	|			match anything except x, y, or z
|^abc|				match abc at the beginning of a line
|abc$	|			match abc at the end of a line
|{{{[}}}:alnum:{{{]}}}|
|{{{[}}}:alpha:{{{]}}}|
|{{{[}}}:cntrl:{{{]}}}|
|{{{[}}}:digit:{{{]}}}|
|{{{[}}}:lower:{{{]}}}|
|{{{[}}}:print:{{{]}}}|
|{{{[}}}:space:{{{]}}}|
|{{{[}}}:upper:{{{]}}}|

!!Advanced features

|(1,$)g/re/command-list	|	execute command-list for each matching line each command must be on its own separate line lines may be continued by ending them in \
|(1,$)G/re/|			interactively edit each matching line