!!!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