SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG
DONATE


YUM REPOSITORY

 
 

MAN page from Trustix ed-0.2-18tr.i586.rpm

ED

Section: User Commands (1)
Updated: 10 November 1994
Index 

NAME

ed, red - text editor 

SYNOPSIS

ed [-] [-Gs] [-p string] [file]

red [-] [-Gs] [-p string] [file] 

DESCRIPTION

edis a line-oriented text editor.It is used to create, display, modify and otherwise manipulate textfiles.redis a restricteded:it can only edit files in the currentdirectory and cannot execute shell commands.

If invoked with afileargument, then a copy offileis read into the editor's buffer.Changes are made to this copy and not directly tofileitself.Upon quittinged,any changes not explicitly saved with a`w'command are lost.

Editing is done in two distinct modes:commandandinput.When first invoked,edis in command mode.In this mode commands are read from the standard input andexecuted to manipulate the contents of the editor buffer.A typical command might look like:

,s/old/new/g

which replaces all occurences of the stringoldwithnew.

When an input command, such as`a'(append),`i'(insert) or`c'(change), is given,edenters input mode. This is the primary meansof adding text to a file.In this mode, no commands are available;instead, the standard input is writtendirectly to the editor buffer. Lines consist of text up to andincluding anewlinecharacter.Input mode is terminated byentering a single period (.) on a line.

Alledcommands operate on whole lines or ranges of lines; e.g.,the`d'command deletes lines; the`m'command moves lines, and so on.It is possible to modify only a portion of a line by means of replacement,as in the example above. However even here, the`s'command is applied to whole lines at a time.

In general,edcommands consist of zero or more line addresses, followed by a singlecharacter command and possibly additional parameters; i.e.,commands have the structure:

[address [,address]]command[parameters]

The address(es) indicate the line or range of lines to be affected by thecommand. If fewer addresses are given than the command accepts, thendefault addresses are supplied.

 

OPTIONS

-G
Forces backwards compatibility. Affects the commands`G',`V',`f',`l',`m',`t',and`!!'.
-s
Suppresses diagnostics. This should be used ifed'sstandard input is from a script.

-p string
Specifies a command prompt. This may be toggled on and off with the`P'command.

file
Specifies the name of a file to read. Iffileis prefixed with abang (!), then it is interpreted as a shell command. In this case,what is read isthe standard output offileexecuted viash(1).To read a file whose name begins with a bang, prefix thename with a backslash (\).The default filename is set tofileonly if it is not prefixed with a bang.

 

LINE ADDRESSING

An address represents the number of a line in the buffer.edmaintains acurrent addresswhich istypically supplied to commands as the default address when none is specified.When a file is first read, the current address is set to the last lineof the file. In general, the current address is set to the last lineaffected by a command.

A line address isconstructed from one of the bases in the list below, optionally followedby a numeric offset. The offset may include any combinationof digits, operators (i.e.,+,-and^)and whitespace.Addresses are read from left to right, and their values are computedrelative to the current address.

One exception to the rule that addresses represent line numbers is theaddress0(zero).This means "before the first line,"and is legal wherever it makes sense.

An address range is two addresses separated either by a comma orsemicolon. The value of the first address in a range cannot exceed thevalue of the the second. If only one address is given in a range, thenthe second address is set to the given address. If ann-tupleof addresses is given wheren > 2,then the corresponding range is determined by the last two addresses inthen-tuple.If only one address is expected, then the last address is used.

Each address in a comma-delimited range is interpreted relative to thecurrent address. In a semicolon-delimited range, the first address isused to set the current address, and the second address is interpretedrelative to the first.

The following address symbols are recognized.

.
The current line (address) in the buffer.

$
The last line in the buffer.

n
Thenth,line in the bufferwherenis a number in the range[0,$].

-
^
The previous line.This is equivalent to-1and may be repeated with cumulative effect.

-n
^n
Thenthprevious line, wherenis a non-negative number.

+
Thenext line.This is equivalent to+1and may be repeated with cumulative effect.

+n
whitespace n
Thenthnext line, wherenis a non-negative number.Whitespacefollowed by a numbernis interpreted as+n.

,
%
The first through last lines in the buffer. This is equivalent tothe address range1,$.

;
The current through last lines in the buffer. This is equivalent tothe address range.,$.

/re/
Thenext line containing the regular expressionre.The search wraps to the beginning of the buffer and continues down to thecurrent line, if necessary.// repeats the last search.

?re?
Theprevious line containing the regular expressionre.The search wraps to the end of the buffer and continues up to thecurrent line, if necessary.?? repeats the last search.

'lc
Theline previously marked by a`k'(mark) command, wherelcis a lower case letter.

 

REGULAR EXPRESSIONS

Regular expressions are patterns used in selecting text.For example, theedcommand

g/string/

prints all lines containingstring.Regular expressions are alsoused by the`s'command for selecting old text to be replaced with new.

In addition to a specifying string literals, regular expressions canrepresentclasses of strings. Strings thus represented are said to be matchedby the corresponding regular expression.If it is possible for a regular expressionto match several strings in a line, then the left-most longest match isthe one selected.

The following symbols are used in constructing regular expressions:

c
Any charactercnot listed below, including `{', '}', `(', `)', `<' and `>',matches itself.

\c
A backslash-escaped charactercother than `{', '}', `(', `)', `<', `>',`b', 'B', `w', `W', `+', and `?'matches itself.

.
Matches any single character.

[char-class]
Matches any single character inchar-class.To include a `]'inchar-class,it must be the first character.A range of characters may be specified by separating the end charactersof the range with a `-', e.g., `a-z' specifies the lower case characters.The following literal expressions can also be used inchar-classto specify sets of characters:

  [:alnum:]  [:cntrl:]  [:lower:]  [:space:]  [:alpha:]  [:digit:]  [:print:]  [:upper:]  [:blank:]  [:graph:]  [:punct:]  [:xdigit:]

If `-' appears as the first or lastcharacter ofchar-class,then it matches itself.All other characters inchar-classmatch themselves.

Patterns inchar-classof the form:

  [.col-elm.] or,  [=col-elm=]

wherecol-elmis acollating elementare interpreted according tolocale(5)(not currently supported).Seeregex(3)for an explanation of these constructs.

[^char-class]
Matches any single character, other than newline, not inchar-class.char-classis definedas above.

^
If `^' is the first character of a regular expression, then itanchors the regular expression to the beginning of a line.Otherwise, it matches itself.

$
If `$' is the last character of a regular expression, itanchors the regular expression to the end of a line.Otherwise, it matches itself.

\(re\)
Defines a (possibly null) subexpressionre.Subexpressions may be nested.A subsequent backreference of the form `\n', wherenis a number in the range [1,9], expands to the text matched by thenthsubexpression.For example, the regular expression `\(a.c\)\1' matches thestring `abcabc', but not `abcadc'.Subexpressions are ordered relative totheir left delimiter.

*
Matches the single character regular expression or subexpressionimmediately preceding it zero or more times. If '*' is the firstcharacter of a regular expression or subexpression, then it matchesitself. The `*' operator sometimes yields unexpected results.For example, the regular expression `b*' matches the beginning ofthe string `abbb', as opposed to the substring `bbb', since a null matchis the only left-most match.

\{n,m\}
\{n,\}
\{n\}
Matches the single character regular expression or subexpressionimmediately preceding it at leastnand at mostmtimes.Ifmis omitted, then it matches at leastntimes.If the comma is also omitted, then it matches exactlyntimes. If any of these forms occurs first in a regular expression orsubexpression, then it is interpreted literally (i.e., the regularexpression `\{2\}' matches the string `{2}', and so on).

\<
\>
Anchors the single character regular expression or subexpressionimmediately following it to the beginning (\<) or ending(\>) of a word, i.e., in ASCII, a maximal string of alphanumericcharacters, including the underscore (_).

The following extended operators are preceded by a backslash (\) todistinguish them from traditionaledsyntax.

\`
\'
Unconditionally matches the beginning (\`) or ending (\') of a line.

\?
Optionally matches the single character regular expression or subexpressionimmediately preceding it. For example, the regular expression `a[bd]\?c'matches the strings `abc', `adc' and `ac'. If \? occurs at the beginningof a regular expressions or subexpression, then it matches a literal `?'.

\+
Matches the single character regular expression or subexpressionimmediately preceding it one or more times. So the regular expression`a+' is shorthand for `aa*'. If \+ occurs at the beginning of aregular expression or subexpression, then it matches a literal `+'.

\b
Matches the beginning or ending (null string) of a word. Thus the regularexpression `\bhello\b' is equivalent to `\<hello\>'. However, `\b\b'is a valid regular expression whereas `\<\>' is not.

\B
Matches (a null string) inside a word.

\w
Matches any character in a word.

\W
Matches any character not in a word.

 

COMMANDS

Alledcommands are single characters, though some require additonal parameters.If a command's parameters extend over several lines, theneach line except for the lastmust be terminated with a backslash (\).

In general, at most one command is allowed per line.However, most commands accept a print suffix, which is any of`p'(print),`l'(list) ,or`n'(enumerate),to print the last line affected by the command.

An interrupt (typically ^C) has the effect of aborting the current commandand returning the editor to command mode.

edrecognizes the following commands. The commands are shown together withthe default address or address range supplied if none isspecified (in parenthesis).

(.)a
Appends text to the buffer after the addressed line, which may be theaddress 0 (zero). Text is entered in input mode. The current address isset to last line entered.

(.,.)c
Changes lines in the buffer. The addressed lines are deletedfrom the buffer, and text is appended in their place.Text is entered in input mode.The current address is set to last line entered.

(.,.)d
Deletes the addressed lines from the buffer.If there is a line after the deleted range, then the current address is setto this line. Otherwise the current address is set to the linebefore the deleted range.

e file
Editsfile,and sets the default filename.Iffileis not specified, then the default filename is used.Any lines in the buffer are deleted beforethe new file is read.The current address is set to the last line read.

e !command
Edits the standard output of`!command',(see!commandbelow).The default filename is unchanged.Any lines in the buffer are deleted before the output ofcommandis read.The current address is set to the last line read.

E file
Editsfileunconditionally.This is similar to theecommand,except that unwritten changes are discarded without warning.The current address is set to the last line read.

f file
Sets the default filename tofile.Iffileis not specified, then the default unescaped filename is printed.

(1,$)g/re/command-list
Appliescommand-listto each of the addressed lines matching a regular expressionre.The current address is set to theline currently matched beforecommand-listis executed.At the end of the`g'command, the current address is set to the last line affected bycommand-list.

Each command incommand-listmust be on a separate line,and every line except for the last must be terminated by a backslash(\).Any commands are allowed, except for`g',`G',`v',and`V'.A newline alone incommand-listis equivalent to a`p'command.

(1,$)G/re/
Interactively edits the addressed lines matching a regular expressionre.For each matching line,the line is printed,the current address is set,and the user is prompted to enter acommand-list.At the end of the`G'command, the current addressis set to the last line affected by (the last)command-list.

The format ofcommand-listis the same as that of the`g'command. A newline alone acts as a null command list.A single `&' repeats the last non-null command list.

H
Toggles the printing of error explanations.By default, explanations are not printed.It is recommended that ed scripts begin with this command toaid in debugging.

h
Prints an explanation of the last error.

(.)i
Inserts text in the buffer before the current line.Text is entered in input mode.The current address is set to the last line entered.

(.,.+1)j
Joins the addressed lines. The addressed lines aredeleted from the buffer and replaced by a singleline containing their joined text.The current address is set to the resultant line.

(.)klc
Marks a line with a lower case letterlc.The line can then be addressed as'lc(i.e., a single quote followed bylc) in subsequent commands. The mark is not cleared until the line isdeleted or otherwise modified.

(.,.)l
Prints the addressed lines unambiguously. If invoked from a terminal,edpauses at the end of each page until a newline is entered.The current address is set to the last line printed.

(.,.)m(.)
Moves lines in the buffer. The addressed lines are moved to after theright-hand destination address, which may be the address0(zero).The current address is set to thelast line moved.

(.,.)n
Prints the addressed lines along withtheir line numbers. The current address is set to the last lineprinted.

(.,.)p
Prints the addressed lines. If invoked from a terminal,edpauses at the end of each page until a newline is entered.The current address is set to the last lineprinted.

P
Toggles the command prompt on and off.Unless a prompt was specified by with command-line option-p string, the command prompt is by default turned off.

q
Quits ed.

Q
Quits ed unconditionally.This is similar to theqcommand,except that unwritten changes are discarded without warning.

($)r file
Readsfileto after the addressed line. Iffileis not specified, then the defaultfilename is used. If there was no default filename prior to the command,then the default filename is set tofile.Otherwise, the default filename is unchanged.The current address is set to the last line read.

($)r !command
Readsto after the addressed linethe standard output of`!command',(see the!commandbelow).The default filename is unchanged.The current address is set to the last line read.

(.,.)s/re/replacement/
(.,.)s/re/replacement/g
(.,.)s/re/replacement/n
Replaces text in the addressed linesmatching a regular expressionrewithreplacement.By default, only the first match in each line is replaced.If the`g'(global) suffix is given, then every match to be replaced.The`n'suffix, wherenis a postive number, causes only thenthmatch to be replaced.It is an error if no substitutions are performed on any of the addressedlines.The current address is set the last line affected.

reandreplacementmay be delimited by any character other than space and newline(see the`s'command below).If one or two of the last delimiters is omitted, then the last lineaffected is printed as though the print suffix`p'were specified.

An unescaped `&' inreplacementis replaced by the currently matched text.The character sequence`\m',wheremis a number in the range [1,9], is replaced by themthbackreference expression of the matched text.Ifreplacementconsists of a single `%', thenreplacementfrom the last substitution is used.Newlines may be embedded inreplacementif they are escaped with a backslash (\).

(.,.)s
Repeats the last substitution.This form of the`s'command accepts a count suffix`n',or any combination of the characters`r',`g',and`p'.If a count suffix`n'is given, then only thenthmatch is replaced.The`r'suffix causesthe regular expression of the last search to be used instead of thethat of the last substitution.The`g'suffix toggles the global suffix of the last substitution.The`p'suffix toggles the print suffix of the last substitutionThe current address is set to the last line affected.

(.,.)t(.)
Copies (i.e., transfers) the addressed lines to after the right-handdestination address, which may be the address0(zero).The current address is set to the last linecopied.

u
Undoes the last command and restores the current addressto what it was before the command.The global commands`g',`G',`v',and`V'.are treated as a single command by undo.`u'is its own inverse.

(1,$)v/re/command-list
Appliescommand-listto each of the addressed lines not matching a regular expressionre.This is similar to the`g'command.

(1,$)V/re/
Interactively edits the addressed lines not matching a regular expressionre.This is similar to the`G'command.

(1,$)w file
Writes the addressed lines tofile.Any previous contents offileis lost without warning.If there is no default filename, then the default filename is set tofile,otherwise it is unchanged. If no filename is specified, then the defaultfilename is used.The current address is unchanged.

(1,$)wq file
Writes the addressed lines tofile,and then executes a`q'command.

(1,$)w !command
Writes the addressed lines to the standard input of`!command',(see the!commandbelow).The default filename and current address are unchanged.

(1,$)W file
Appends the addressed lines to the end offile.This is similar to the`w'command, expect that the previous contents of file is not clobbered.The current address is unchanged.

(.)x
Copies (puts) the contents of the cut buffer to after the addressed line.The current address is set to the last line copied.

(.,.)y
Copies (yanks) the addressed lines to the cut buffer.The cut buffer is overwritten by subsequent`y',`s',`j',`d',or`c'commands.The current address is unchanged.

(.+1)zn
Scrollsnlines at a time starting at addressed line. Ifnis not specified, then the current window size is used.The current address is set to the last line printed.

!command
Executescommandviash(1).If the first character ofcommandis `!', then it is replaced by text of theprevious`!command'.eddoes not processcommandfor backslash (\) escapes.However, an unescaped`%'is replaced by the default filename.When the shell returns from execution, a `!'is printed to the standard output.The current line is unchanged.

(.,.)#
Begins a comment; the rest of the line, up to a newline, is ignored.If a line address followed by a semicolon is given, then thecurrent address is set to that address. Otherwise, the current addressis unchanged.

($)=
Prints the line number of the addressed line.

(.+1)newline
Prints the addressed line, and sets the current address tothat line.

 

FILES

/tmp/ed.*
Buffer file
ed.hup
The file to whichedattempts to write the buffer if the terminal hangs up.

 

SEE ALSO

vi(1),sed(1),regex(3),sh(1).

USD:12-13

B. W. Kernighan and P. J. Plauger,Software Tools in Pascal ,Addison-Wesley, 1981.

 

LIMITATIONS

edprocessesfilearguments for backslash escapes, i.e., in a filename,any characters preceded by a backslash (\) areinterpreted literally.

If a text (non-binary) file is not terminated by a newline character,thenedappends one on reading/writing it. In the case of a binary file,eddoes not append a newline on reading/writing.

per line overhead: 4 ints

 

DIAGNOSTICS

When an error occurs,ifed'sinput is from a regular file or here document, then itexits, otherwise itprints a `?' and returns to command mode.An explanation of the last error can beprinted with the`h'(help) command.

Attempting to quitedor edit another file before writing a modified bufferresults in an error.If the command is entered a second time, it succeeds,but any changes to the buffer are lost.

edexits with 0 if no errors occurred; otherwise >0.


 

Index

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
LINE ADDRESSING
REGULAR EXPRESSIONS
COMMANDS
FILES
SEE ALSO
LIMITATIONS
DIAGNOSTICS

This document was created byman2html,using the manual pages.