


      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



      NNNNAAAAMMMMEEEE
           ed, red - text editor

      SSSSYYYYNNNNTTTTAAAAXXXX
           eeeedddd [ ---- ] [ ----xxxx ] [ file ]

           rrrreeeedddd [ ---- ] [ ----xxxx ] [ file ]

      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
           _E_d is the standard text editor.  If the _f_i_l_e argument is
           given, _e_d simulates an _e command (see below) on the named
           file; that is to say, the file is read into _e_d's buffer so
           that it can be edited.  The optional ---- suppresses the
           printing of character counts by _e, _r, and _w commands, of
           diagnostics from _e and _q commands, and of the !!!! prompt after
           a !!!!_s_h_e_l_l _c_o_m_m_a_n_d.  If ----xxxx is present, an _x command is
           simulated first to handle an encrypted file.  _E_d operates on
           a copy of the file it is editing; changes made to the copy
           have no effect on the file until a _w (write) command is
           given.  The copy of the text being edited resides in a
           temporary file called the _b_u_f_f_e_r.  There is only one buffer.

           _R_e_d is a restricted version of _e_d.  It will only allow
           editing of files in the current directory.  It prohibits
           executing shell commands via !!!!_s_h_e_l_l _c_o_m_m_a_n_d.  Attempts to
           bypass these restrictions result in an error message
           (_r_e_s_t_r_i_c_t_e_d _s_h_e_l_l).

           Both _e_d and _r_e_d support the _f_s_p_e_c(4) formatting capability.
           After including a format specification as the first line of
           _f_i_l_e and invoking _e_d with your terminal in ssssttttttttyyyy ----ttttaaaabbbbssss or
           ssssttttttttyyyy ttttaaaabbbb3333 mode (see _s_t_t_y(1), the specified tab stops will
           automatically be used when scanning _f_i_l_e.  For example, if
           the first line of a file contained:
                <:t5,10,15 s72:>
           tab stops would be set at columns 5, 10 and 15, and a
           maximum line length of 72 would be imposed.  NOTE:  while
           inputting text, tab characters when typed are expanded to
           every eighth column as is the default.

           Commands to _e_d have a simple and regular structure: zero,
           one, or two _a_d_d_r_e_s_s_e_s followed by a single-character
           _c_o_m_m_a_n_d, possibly followed by parameters to that command.
           These addresses specify one or more lines in the buffer.
           Every command that requires addresses has default addresses,
           so that the addresses can very often be omitted.

           In general, only one command may appear on a line.  Certain
           commands allow the input of text.  This text is placed in
           the appropriate place in the buffer.  While _e_d is accepting
           text, it is said to be in _i_n_p_u_t _m_o_d_e.  In this mode, _n_o
           commands are recognized; all input is merely collected.



      Page 1                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



           Input mode is left by typing a period (....) alone at the
           beginning of a line.

           _E_d supports a limited form of _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n notation;
           regular expressions are used in addresses to specify lines
           and in some commands (e.g., _s) to specify portions of a line
           that are to be substituted.  A regular expression (RE)
           specifies a set of character strings.  A member of this set
           of strings is said to be _m_a_t_c_h_e_d by the RE.  The REs allowed
           by _e_d are constructed as follows:

           The following _o_n_e-_c_h_a_r_a_c_t_e_r _R_Es match a _s_i_n_g_l_e character:

           1.1    An ordinary character (_n_o_t one of those discussed in
                  1.2 below) is a one-character RE that matches itself.

           1.2    A backslash (\\\\) followed by any special character is
                  a one-character RE that matches the special character
                  itself.  The special characters are:

                  a.    ...., ****, [[[[, and \\\\ (period, asterisk, left square
                        bracket, and backslash, respectively), which
                        are always special, _e_x_c_e_p_t when they appear
                        within square brackets ([[[[]]]]; see 1.4 below).

                  b.    ^ (caret or circumflex), which is special at
                        the _b_e_g_i_n_n_i_n_g of an _e_n_t_i_r_e RE (see 3.1 and 3.2
                        below), or when it immediately follows the left
                        of a pair of square brackets ([[[[]]]]) (see 1.4
                        below).

                  c.    $$$$ (currency symbol), which is special at the
                        _e_n_d of an entire RE (see 3.2 below).

                  d.    The character used to bound (i.e., delimit) an
                        entire RE, which is special for that RE (for
                        example, see how slash (////) is used in the _g
                        command, below.)

           1.3    A period (....) is a one-character RE that matches any
                  character except new-line.

           1.4    A non-empty string of characters enclosed in square
                  brackets ([[[[]]]]) is a one-character RE that matches _a_n_y
                  _o_n_e character in that string.  If, however, the first
                  character of the string is a circumflex (^), the
                  one-character RE matches any character _e_x_c_e_p_t new-
                  line and the remaining characters in the string.  The
                  ^ has this special meaning _o_n_l_y if it occurs first in
                  the string.  The minus (----) may be used to indicate a
                  range of consecutive ASCII characters; for example,
                  [[[[0000----9999]]]] is equivalent to [[[[0000111122223333444455556666777788889999]]]].  The ---- loses



      Page 2                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



                  this special meaning if it occurs first (after an
                  initial ^, if any) or last in the string.  The right
                  square bracket (]]]]) does not terminate such a string
                  when it is the first character within it (after an
                  initial ^, if any); e.g., [[[[]]]]aaaa----ffff]]]] matches either a
                  right square bracket (]]]]) or one of the letters aaaa
                  through ffff inclusive.  The four characters listed in
                  1.2.a above stand for themselves within such a string
                  of characters.

           The following rules may be used to construct _R_Es from one-
           character REs:

           2.1    A one-character RE is a RE that matches whatever the
                  one-character RE matches.

           2.2    A one-character RE followed by an asterisk (****) is a
                  RE that matches _z_e_r_o or more occurrences of the one-
                  character RE.  If there is any choice, the longest
                  leftmost string that permits a match is chosen.

           2.3    A one-character RE followed by \\\\{{{{_m\\\\}}}}, \\\\{{{{_m,\\\\}}}}, or
                  \\\\{{{{_m,_n\\\\}}}} is a RE that matches a _r_a_n_g_e of occurrences
                  of the one-character RE.  The values of _m and _n must
                  be non-negative integers less than 256; \\\\{{{{_m\\\\}}}} matches
                  _e_x_a_c_t_l_y _m occurrences; \\\\{{{{_m,\\\\}}}} matches _a_t _l_e_a_s_t _m
                  occurrences; \\\\{{{{_m,_n\\\\}}}} matches _a_n_y _n_u_m_b_e_r of
                  occurrences _b_e_t_w_e_e_n _m and _n inclusive.  Whenever a
                  choice exists, the RE matches as many occurrences as
                  possible.

           2.4    The concatenation of REs is a RE that matches the
                  concatenation of the strings matched by each
                  component of the RE.

           2.5    A RE enclosed between the character sequences \\\\(((( and
                  \\\\)))) is a RE that matches whatever the unadorned RE
                  matches.

           2.6    The expression \\\\_n matches the same string of
                  characters as was matched by an expression enclosed
                  between \\\\(((( and \\\\)))) _e_a_r_l_i_e_r in the same RE.  Here _n is
                  a digit; the sub-expression specified is that
                  beginning with the _n-th occurrence of \\\\(((( counting
                  from the left.  For example, the expression
                  ^\\\\((((....****\\\\))))\\\\1111$$$$ matches a line consisting of two repeated
                  appearances of the same string.

           Finally, an _e_n_t_i_r_e _R_E may be constrained to match only an
           initial segment or final segment of a line (or both):

           3.1    A circumflex (^) at the beginning of an entire RE



      Page 3                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



                  constrains that RE to match an _i_n_i_t_i_a_l segment of a
                  line.

           3.2    A currency symbol ($$$$) at the end of an entire RE
                  constrains that RE to match a _f_i_n_a_l segment of a
                  line.

           The construction ^_e_n_t_i_r_e _R_E$$$$ constrains the entire RE to
           match the entire line.

           The null RE (e.g., ////////) is equivalent to the last RE
           encountered.  See also the last paragraph before _F_I_L_E_S
           below.

           To understand addressing in _e_d it is necessary to know that
           at any time there is a _c_u_r_r_e_n_t _l_i_n_e.  Generally speaking,
           the current line is the last line affected by a command; the
           exact effect on the current line is discussed under the
           description of each command.  _A_d_d_r_e_s_s_e_s are constructed as
           follows:

            1.    The character .... addresses the current line.

            2.    The character $$$$ addresses the last line of the
                  buffer.

            3.    A decimal number _n addresses the _n-th line of the
                  buffer.

            4.    '_x addresses the line marked with the mark name
                  character _x, which must be a lower-case letter.
                  Lines are marked with the _k command described below.

            5.    A RE enclosed by slashes (////) addresses the first line
                  found by searching _f_o_r_w_a_r_d from the line _f_o_l_l_o_w_i_n_g
                  the current line toward the end of the buffer and
                  stopping at the first line containing a string
                  matching the RE.  If necessary, the search wraps
                  around to the beginning of the buffer and continues
                  up to and including the current line, so that the
                  entire buffer is searched.  See also the last
                  paragraph before _F_I_L_E_S below.

            6.    A RE enclosed in question marks (????) addresses the
                  first line found by searching _b_a_c_k_w_a_r_d from the line
                  _p_r_e_c_e_d_i_n_g the current line toward the beginning of
                  the buffer and stopping at the first line containing
                  a string matching the RE.  If necessary, the search
                  wraps around to the end of the buffer and continues
                  up to and including the current line.  See also the
                  last paragraph before _F_I_L_E_S below.




      Page 4                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



            7.    An address followed by a plus sign (++++) or a minus
                  sign (----) followed by a decimal number specifies that
                  address plus (respectively minus) the indicated
                  number of lines.  The plus sign may be omitted.

            8.    If an address begins with ++++ or ----, the addition or
                  subtraction is taken with respect to the current
                  line; e.g, ----5555 is understood to mean ....----5555.

            9.    If an address ends with ++++ or ----, then 1 is added to or
                  subtracted from the address, respectively.  As a
                  consequence of this rule and of rule 8 immediately
                  above, the address ---- refers to the line preceding the
                  current line.  (To maintain compatibility with
                  earlier versions of the editor, the character ^ in
                  addresses is entirely equivalent to ----.) Moreover,
                  trailing ++++ and ---- characters have a cumulative effect,
                  so -------- refers to the current line less 2.

           10.    For convenience, a comma (,,,,) stands for the address
                  pair 1111,,,,$$$$, while a semicolon (;;;;) stands for the pair
                  ....,,,,$$$$.

           Commands may require zero, one, or two addresses.  Commands
           that require no addresses regard the presence of an address
           as an error.  Commands that accept one or two addresses
           assume default addresses when an insufficient number of
           addresses is given; if more addresses are given than such a
           command requires, the last one(s) are used.

           Typically, addresses are separated from each other by a
           comma (,,,,).  They may also be separated by a semicolon (;;;;).
           In the latter case, the current line (....) is set to the first
           address, and only then is the second address calculated.
           This feature can be used to determine the starting line for
           forward and backward searches (see rules 5. and 6. above).
           The second address of any two-address sequence must
           correspond to a line that follows, in the buffer, the line
           corresponding to the first address.

           In the following list of _e_d commands, the default addresses
           are shown in parentheses.  The parentheses are _n_o_t part of
           the address; they show that the given addresses are the
           default.

           It is generally illegal for more than one command to appear
           on a line.  However, any command (except _e, _f, _r, or _w) may
           be suffixed by llll, nnnn or pppp, in which case the current line is
           either listed, numbered or printed, respectively, as
           discussed below under the _l, _n and _p commands.

           ((((....))))aaaa



      Page 5                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



           <text>
           ....
                The _append command reads the given text and appends it
                after the addressed line; .... is left at the last
                inserted line, or, if there were none, at the addressed
                line.  Address 0 is legal for this command: it causes
                the ``appended'' text to be placed at the beginning of
                the buffer.  The maximum number of characters that may
                be entered from a terminal is 256 per line (including
                the newline character).

           ((((....))))cccc
           <text>
           ....
                The _change command deletes the addressed lines, then
                accepts input text that replaces these lines; .... is left
                at the last line input, or, if there were none, at the
                first line that was not deleted.

           ((((....,,,,....))))dddd
                The _delete command deletes the addressed lines from the
                buffer.  The line after the last line deleted becomes
                the current line; if the lines deleted were originally
                at the end of the buffer, the new last line becomes the
                current line.

           eeee _f_i_l_e
                The _edit command causes the entire contents of the
                buffer to be deleted, and then the named file to be
                read in; .... is set to the last line of the buffer.  If
                no file name is given, the currently-remembered file
                name, if any, is used (see the _f command).  The number
                of characters read is typed; _f_i_l_e is remembered for
                possible use as a default file name in subsequent _e, _r,
                and _w commands.  If _f_i_l_e is replaced by !!!!, the rest of
                the line is taken to be a shell (_s_h(1)) command whose
                output is to be read.  Such a shell command is _n_o_t
                remembered as the current file name.  See also
                _D_I_A_G_N_O_S_T_I_C_S below.

           EEEE _f_i_l_e
                The _Edit command is like _e, except that the editor does
                not check to see if any changes have been made to the
                buffer since the last _w command.

           ffff _f_i_l_e
                If _f_i_l_e is given, the _file-name command changes the
                currently-remembered file name to _f_i_l_e; otherwise, it
                prints the currently-remembered file name.

           ((((1111,,,,$$$$))))gggg////_R_E////_c_o_m_m_a_n_d _l_i_s_t
                In the _global command, the first step is to mark every



      Page 6                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



                line that matches the given RE.  Then, for every such
                line, the given _c_o_m_m_a_n_d _l_i_s_t is executed with ....
                initially set to that line.  A single command or the
                first of a list of commands appears on the same line as
                the global command.  All lines of a multi-line list
                except the last line must be ended with a \\\\; _a, _i, and
                _c commands and associated input are permitted; the ....
                terminating input mode may be omitted if it would be
                the last line of the _c_o_m_m_a_n_d _l_i_s_t.  An empty _c_o_m_m_a_n_d
                _l_i_s_t is equivalent to the _p command.  The _g, _G, _v, and
                _V commands are _n_o_t permitted in the _c_o_m_m_a_n_d _l_i_s_t.  See
                also _B_U_G_S and the last paragraph before _F_I_L_E_S below.

           ((((1111,,,,$$$$))))GGGG////_R_E////
                In the interactive _Global command, the first step is to
                mark every line that matches the given RE.  Then, for
                every such line, that line is printed, .... is changed to
                that line, and any _o_n_e command (other than one of the
                _a, _c, _i, _g, _G, _v, and _V commands) may be input and is
                executed.  After the execution of that command, the
                next marked line is printed, and so on; a new-line acts
                as a null command; an &&&& causes the re-execution of the
                most recent command executed within the current
                invocation of _G.  Note that the commands input as part
                of the execution of the _G command may address and
                affect _a_n_y lines in the buffer.  The _G command can be
                terminated by an interrupt signal (ASCII DEL or BREAK).

           hhhh
                The _help command gives a short error message that
                explains the reason for the most recent ???? diagnostic.

           HHHH
                The _Help command causes _e_d to enter a mode in which
                error messages are printed for all subsequent ????
                diagnostics.  It will also explain the previous ???? if
                there was one.  The _H command alternately turns this
                mode on and off; it is initially off.

           ((((....))))iiii
           <text>
           ....
                The _insert command inserts the given text before the
                addressed line; .... is left at the last inserted line,
                or, if there were none, at the addressed line.  This
                command differs from the _a command only in the
                placement of the input text.  Address 0 is not legal
                for this command.  The maximum number of characters
                that may be entered from a terminal is 256 per line
                (including the newline character).

           ((((....,,,,....++++1111))))jjjj



      Page 7                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



                The _join command joins contiguous lines by removing the
                appropriate new-line characters.  If exactly one
                address is given, this command does nothing.

           ((((....))))kkkk_x
                The mar_k command marks the addressed line with name _x,
                which must be a lower-case letter.  The address '_x then
                addresses this line; .... is unchanged.

           ((((....,,,,....))))llll
                The _list command prints the addressed lines in an
                unambiguous way:  a few non-printing characters (e.g.,
                _t_a_b, _b_a_c_k_s_p_a_c_e) are represented by (hopefully) mnemonic
                overstrikes, all other non-printing characters are
                printed in octal, and long lines are folded.  An _l
                command may be appended to any other command other than
                _e, _f, _r, or _w.

           ((((....,,,,....))))mmmm_a
                The _move command repositions the addressed line(s)
                after the line addressed by _a.  Address 0 is legal for
                _a and causes the addressed line(s) to be moved to the
                beginning of the file; it is an error if address _a
                falls within the range of moved lines; .... is left at the
                last line moved.

           ((((....,,,,....))))nnnn
                The _number command prints the addressed lines,
                preceding each line by its line number and a tab
                character; .... is left at the last line printed.  The _n
                command may be appended to any other command other than
                _e, _f, _r, or _w.

           ((((....,,,,....))))pppp
                The _print command prints the addressed lines; .... is left
                at the last line printed.  The _p command may be
                appended to any other command other than _e, _f, _r, or _w;
                for example, _d_p deletes the current line and prints the
                new current line.

           PPPP
                The editor will prompt with a **** for all subsequent
                commands.  The _P command alternately turns this mode on
                and off; it is initially off.

           qqqq
                The _quit command causes _e_d to exit.  No automatic write
                of a file is done (but see _D_I_A_G_N_O_S_T_I_C_S below).

           QQQQ
                The editor exits without checking if changes have been
                made in the buffer since the last _w command.



      Page 8                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



           (((($$$$))))rrrr _f_i_l_e
                The _read command reads in the given file after the
                addressed line.  If no file name is given, the
                currently-remembered file name, if any, is used (see _e
                and _f commands).  The currently-remembered file name is
                _n_o_t changed unless _f_i_l_e is the very first file name
                mentioned since _e_d was invoked.  Address 0 is legal for
                _r and causes the file to be read at the beginning of
                the buffer.  If the read is successful, the number of
                characters read is typed; .... is set to the last line
                read in.  If _f_i_l_e is replaced by !!!!, the rest of the
                line is taken to be a shell (_s_h(1)) command whose
                output is to be read.  For example, "$r !ls" appends
                current directory to the end of the file being edited.
                Such a shell command is _n_o_t remembered as the current
                file name.

           ((((....,,,,....))))ssss////_R_E////_r_e_p_l_a_c_e_m_e_n_t////         or
           ((((....,,,,....))))ssss////_R_E////_r_e_p_l_a_c_e_m_e_n_t////gggg
                The _substitute command searches each addressed line for
                an occurrence of the specified RE.  In each line in
                which a match is found, all (non-overlapped) matched
                strings are replaced by the _r_e_p_l_a_c_e_m_e_n_t if the global
                replacement indicator gggg appears after the command.  If
                the global indicator does not appear, only the first
                occurrence of the matched string is replaced.  It is an
                error for the substitution to fail on _a_l_l addressed
                lines.  Any character other than space or new-line may
                be used instead of //// to delimit the RE and the
                _r_e_p_l_a_c_e_m_e_n_t; .... is left at the last line on which a
                substitution occurred.  See also the last paragraph
                before _F_I_L_E_S below.

                An ampersand (&&&&) appearing in the _r_e_p_l_a_c_e_m_e_n_t is
                replaced by the string matching the RE on the current
                line.  The special meaning of &&&& in this context may be
                suppressed by preceding it by \\\\.  As a more general
                feature, the characters \\\\_n, where _n is a digit, are
                replaced by the text matched by the _n-th regular
                subexpression of the specified RE enclosed between \\\\((((
                and \\\\)))).  When nested parenthesized subexpressions are
                present, _n is determined by counting occurrences of \\\\((((
                starting from the left.  When the character %%%% is the
                only character in the _r_e_p_l_a_c_e_m_e_n_t, the _r_e_p_l_a_c_e_m_e_n_t used
                in the most recent substitute command is used as the
                _r_e_p_l_a_c_e_m_e_n_t in the current substitute command.  The %%%%
                loses its special meaning when it is in a replacement
                string of more than one character or is preceded by a
                \\\\.

                A line may be split by substituting a new-line
                character into it.  The new-line in the _r_e_p_l_a_c_e_m_e_n_t



      Page 9                                                   (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



                must be escaped by preceding it by \\\\.  Such
                substitution cannot be done as part of a _g or _v command
                list.

           ((((....,,,,....))))tttt_a
                This command acts just like the _m command, except that
                a _c_o_p_y of the addressed lines is placed after address _a
                (which may be 0); .... is left at the last line of the
                copy.

           uuuu
                The _undo command nullifies the effect of the most
                recent command that modified anything in the buffer,
                namely the most recent _a, _c, _d, _g, _i, _j, _m, _r, _s, _t, _v,
                _G, or _V command.

           ((((1111,,,,$$$$))))vvvv////_R_E////_c_o_m_m_a_n_d _l_i_s_t
                This command is the same as the global command _g except
                that the _c_o_m_m_a_n_d _l_i_s_t is executed with .... initially set
                to every line that does _n_o_t match the RE.

           ((((1111,,,,$$$$))))VVVV////_R_E////
                This command is the same as the interactive global
                command _G except that the lines that are marked during
                the first step are those that do _n_o_t match the RE.

           ((((1111,,,,$$$$))))wwww _f_i_l_e
                The _write command writes the addressed lines into the
                named file.  If the file does not exist, it is created
                with mode 666 (readable and writable by everyone),
                unless your _u_m_a_s_k setting (see _s_h(1)) dictates
                otherwise.  The currently-remembered file name is _n_o_t
                changed unless _f_i_l_e is the very first file name
                mentioned since _e_d was invoked.  If no file name is
                given, the currently-remembered file name, if any, is
                used (see _e and _f commands); .... is unchanged.  If the
                command is successful, the number of characters written
                is typed.  If _f_i_l_e is replaced by !!!!, the rest of the
                line is taken to be a shell (_s_h(1)) command whose
                standard input is the addressed lines.  Such a shell
                command is _n_o_t remembered as the current file name.

           XXXX
                A key string is demanded from the standard input.
                Subsequent _e, _r, and _w commands will encrypt and
                decrypt the text with this key by the algorithm of
                _c_r_y_p_t(1).  An explicitly empty key turns off
                encryption.

           (((($$$$))))====
                The line number of the addressed line is typed; .... is
                unchanged by this command.



      Page 10                                                  (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



           !!!!_s_h_e_l_l _c_o_m_m_a_n_d
                The remainder of the line after the !!!! is sent to the
                system shell (_s_h(1)) to be interpreted as a command.
                Within the text of that command, the unescaped
                character %%%% is replaced with the remembered file name;
                if a !!!! appears as the first character of the shell
                command, it is replaced with the text of the previous
                shell command.  Thus, !!!!!!!! will repeat the last shell
                command.  If any expansion is performed, the expanded
                line is echoed; .... is unchanged.

           ((((....++++1111))))<new-line>
                An address alone on a line causes the addressed line to
                be printed.  A new-line alone is equivalent to ....++++1111pppp; it
                is useful for stepping forward through the buffer.

           If an interrupt signal (ASCII DEL or BREAK) is sent, _e_d
           prints a ???? and returns to _i_t_s command level.

           Some size limitations:  512 characters per line, 256
           characters per global command list, 64 characters per file
           name, and 128K characters in the buffer.  The limit on the
           number of lines depends on the amount of user memory:  each
           line takes 1 word.

           When reading a file, _e_d discards ASCII NUL characters and
           all characters after the last new-line.  Files (e.g., aaaa....oooouuuutttt)
           that contain characters not in the ASCII set (bit 8 on)
           cannot be edited by _e_d.

           If the closing delimiter of a RE or of a replacement string
           (e.g., ////) would be the last character before a new-line,
           that delimiter may be omitted, in which case the addressed
           line is printed.  The following pairs of commands are
           equivalent:
                s/s1/s2   s/s1/s2/p
                g/s1      g/s1/p
                ?s1       ?s1?
      FFFFIIIILLLLEEEESSSS
           /tmp/e#   temporary; # is the process number.
           ed.hup    work is saved here if the terminal is hung up.
      DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
           ????         for command errors.
           ????_f_i_l_e     for an inaccessible file.
                     (use the _help and _Help commands for detailed
                     explanations).

           If changes have been made in the buffer since the last _w
           command that wrote the entire buffer, _e_d warns the user if
           an attempt is made to destroy _e_d's buffer via the _e or _q
           commands:  it prints ???? and allows one to continue editing.
           A second _e or _q command at this point will take effect.  The



      Page 11                                                  (9010-E)






      EEEEDDDD((((1111))))                       ((((UUUUNNNNIIIIXXXX 5555....0000))))                      EEEEDDDD((((1111))))



           ---- command-line option inhibits this feature.

      SSSSEEEEEEEE AAAALLLLSSSSOOOO
           crypt(1), grep(1), sed(1), sh(1), stty(1), fspec(4),
           regexp(5).

      CCCCAAAAVVVVEEEEAAAATTTTSSSS AAAANNNNDDDD BBBBUUUUGGGGSSSS
           A ! command cannot be subject to a _g or a _v command.
           The ! command and the !!!! escape from the _e, _r, and _w commands
           cannot be used if the the editor is invoked from a
           restricted shell (see _s_h(1)).
           The sequence \\\\nnnn in a RE does not match a new-line character.
           The _l command mishandles DEL.
           Files encrypted directly with the _c_r_y_p_t(1) command with the
           null key cannot be edited.
           Characters are masked to 7 bits on input.







































      Page 12                                                  (9010-E)



