Annotation of researchv10dc/man/adm/man1/ed.1, revision 1.1.1.1

1.1       root        1: .TH ED 1
                      2: .CT 1 editor
                      3: .ds . (\|\f5.\fP\|)
                      4: .ds .. (\|\f5.,.\fP\|)
                      5: .ds 1$ (\|\f51,$\fP\|)
                      6: .SH NAME
                      7: ed, e \- text editor
                      8: .SH SYNOPSIS
                      9: .B ed
                     10: [
                     11: .B -
                     12: ]
                     13: [
                     14: .B -o
                     15: ]
                     16: [
                     17: .I file
                     18: ]
                     19: .SH DESCRIPTION
                     20: .I Ed
                     21: is the standard text editor;
                     22: .I e
                     23: is another name for it.
                     24: .PP
                     25: If a
                     26: .I file
                     27: argument is given,
                     28: .I ed
                     29: simulates an
                     30: .L e
                     31: command (see below) on that file:
                     32: it is read into
                     33: .I ed's
                     34: buffer so that it can be edited.
                     35: The options are
                     36: .TP
                     37: .B -
                     38: Suppress the printing
                     39: of character counts by
                     40: .LR e ,
                     41: .LR r ,
                     42: and
                     43: .L w
                     44: commands and of the confirming 
                     45: .L !
                     46: by
                     47: .L !
                     48: commands.
                     49: .TP
                     50: .B -o
                     51: (for output piping)
                     52: Place on the standard error file all output except writing by
                     53: .L w
                     54: commands.
                     55: If no 
                     56: .I file
                     57: is given, make
                     58: .F /dev/stdout
                     59: the remembered file; see the
                     60: .L e
                     61: command below.
                     62: .PP
                     63: .I Ed
                     64: operates on a `buffer', a copy of the file it is editing;
                     65: changes made
                     66: in the buffer have no effect on the file until a
                     67: .L w
                     68: (write)
                     69: command is given.
                     70: The copy of the text being edited resides
                     71: in a temporary file called the 
                     72: .IR buffer .
                     73: .PP
                     74: Commands to
                     75: .I ed
                     76: have a simple and regular structure: zero or
                     77: more
                     78: .I addresses
                     79: followed by a single character
                     80: .I command,
                     81: possibly
                     82: followed by parameters to the command.
                     83: These addresses specify one or more lines in the buffer.
                     84: Missing addresses are supplied by default.
                     85: .PP
                     86: In general, only one command may appear on a line.
                     87: Certain commands allow the 
                     88: addition of text to the buffer.
                     89: While
                     90: .I ed
                     91: is accepting text, it is said
                     92: to be in
                     93: .I  "input mode."
                     94: In this mode, no commands are recognized;
                     95: all input is merely collected.
                     96: Input mode is left by typing a period 
                     97: .L .
                     98: alone at the
                     99: beginning of a line.
                    100: .PP
                    101: .I Ed
                    102: supports a limited form of
                    103: .I "regular expression"
                    104: notation.
                    105: A regular expression specifies
                    106: a set of strings of characters.
                    107: A member of this set of strings is said to be
                    108: .I matched
                    109: by the regular expression.
                    110: In the following specification for regular expressions
                    111: the word `character' means any character but newline.
                    112: .IP 1.
                    113: Any character except a special character
                    114: matches itself.
                    115: Special characters are
                    116: the regular expression delimiter plus
                    117: .L \e[.
                    118: and sometimes
                    119: .LR ^*$ .
                    120: .IP 2.
                    121: A
                    122: .B .
                    123: matches any character.
                    124: .IP 3.
                    125: A
                    126: .L \e
                    127: followed by any character except a digit,
                    128: .LR ( ,
                    129: or
                    130: .L )
                    131: matches that character.
                    132: .IP 4.
                    133: A nonempty string
                    134: .I s
                    135: bracketed
                    136: .BI [ \|s\| ]
                    137: (or
                    138: .BI [^ s\| ])
                    139: matches any character in (or not in)
                    140: .I s.
                    141: In 
                    142: .I s,
                    143: .L \e
                    144: has no special meaning, and
                    145: .L ]
                    146: may only appear as
                    147: the first letter.
                    148: A substring 
                    149: .IB a - b ,
                    150: with
                    151: .I a
                    152: and
                    153: .I b
                    154: in ascending
                    155: .SM ASCII 
                    156: order, stands for the inclusive
                    157: range of
                    158: .SM ASCII 
                    159: characters.
                    160: .IP 5.
                    161: A regular expression of form 1-4 followed by
                    162: .L *
                    163: matches a sequence of
                    164: 0 or more matches of the regular expression.
                    165: .IP 6.
                    166: A regular expression,
                    167: .I x,
                    168: of form 1-8, bracketed
                    169: .BI \e( \|x\| \e)
                    170: matches what
                    171: .I x
                    172: matches.
                    173: .IP 7.
                    174: A
                    175: .L \e
                    176: followed by a digit 
                    177: .I n
                    178: matches a copy of the string that the
                    179: bracketed regular expression beginning with the
                    180: .IR n th
                    181: .L \e(
                    182: matched.
                    183: .IP 8.
                    184: A regular expression of form 1-8,
                    185: .I x,
                    186: followed by a regular expression of form 1-7,
                    187: .I y
                    188: matches a match for
                    189: .I x
                    190: followed by a match for
                    191: .I y,
                    192: with the
                    193: .I x
                    194: match being as long as possible while still permitting a
                    195: .I y
                    196: match.
                    197: .IP 9.
                    198: A regular expression of form 1-8, or a null string, preceded by
                    199: .L ^
                    200: (and/or followed by
                    201: .LR $ ),
                    202: is constrained to matches that
                    203: begin at the left (and/or end at the right) end of a line.
                    204: .IP 10.
                    205: A regular expression of form 1-9 picks out the
                    206: longest among the leftmost matches in a line.
                    207: .IP 11.
                    208: An empty regular expression stands for a copy of the
                    209: last regular expression encountered.
                    210: .PP
                    211: Regular expressions are used in addresses to specify
                    212: lines and in one command
                    213: (see
                    214: .I s
                    215: below)
                    216: to specify a portion of a line which is to be replaced.
                    217: If it is desired to use one of
                    218: the regular expression metacharacters as an ordinary
                    219: character, that character may be preceded by `\e'.
                    220: This also applies to the character bounding the regular
                    221: expression (often 
                    222: .LR / )
                    223: and to
                    224: .L \e
                    225: itself.
                    226: .PP
                    227: To understand addressing in
                    228: .I ed
                    229: it is necessary to know that at any time there is a
                    230: .I "current line."
                    231: Generally speaking, the current line is
                    232: the last line affected by a command; however,
                    233: the exact effect on the current line
                    234: is discussed under the description of
                    235: the command.
                    236: Addresses are constructed as follows.
                    237: .TP
                    238: 1.
                    239: The character
                    240: .LR . ,
                    241: customarily called `dot',
                    242: addresses the current line.
                    243: .TP
                    244: 2.
                    245: The character 
                    246: .L $
                    247: addresses the last line of the buffer.
                    248: .TP
                    249: 3.
                    250: A decimal number
                    251: .I n
                    252: addresses the
                    253: .IR n -th
                    254: line of the buffer.
                    255: .TP
                    256: 4.
                    257: .BI \'x
                    258: addresses the line marked with the name
                    259: .IR x ,
                    260: which must be a lower-case letter.
                    261: Lines are marked with the
                    262: .L k
                    263: command described below.
                    264: .TP
                    265: 5.
                    266: A regular expression enclosed in slashes 
                    267: .L /
                    268: addresses
                    269: the line found by searching forward from the current line
                    270: and stopping at the first line containing a
                    271: string that matches the regular expression.
                    272: If necessary the search wraps around to the beginning of the
                    273: buffer.
                    274: .TP
                    275: 6.
                    276: A regular expression enclosed in queries 
                    277: .L ?
                    278: addresses
                    279: the line found by searching backward from the current line
                    280: and stopping at the first line containing
                    281: a string that matches the regular expression.
                    282: If necessary
                    283: the search wraps around to the end of the buffer.
                    284: .TP
                    285: 7.
                    286: An address followed by a plus sign 
                    287: .L +
                    288: or a minus sign
                    289: .L -
                    290: followed by a decimal number specifies that address plus
                    291: (resp. minus) the indicated number of lines.
                    292: The plus sign may be omitted.
                    293: .TP
                    294: 8.
                    295: An address followed by 
                    296: .L +
                    297: (or
                    298: .LR - )
                    299: followed by a
                    300: regular expression enclosed in slashes specifies the first
                    301: matching line following (or preceding) that address.
                    302: The search wraps around if necessary.
                    303: The 
                    304: .L +
                    305: may be omitted, so
                    306: .L 0/x/
                    307: addresses the
                    308: .I first
                    309: line in the buffer with an 
                    310: .LR x .
                    311: Enclosing the regular expression in 
                    312: .L ?
                    313: reverses the search direction.
                    314: .TP
                    315: 9.
                    316: If an address begins with 
                    317: .L +
                    318: or
                    319: .L -
                    320: the addition or subtraction is taken with respect to the current line;
                    321: e.g.\&
                    322: .L -5
                    323: is understood to mean
                    324: .LR .-5 .
                    325: .TP
                    326: 10.
                    327: If an address ends with 
                    328: .L +
                    329: or
                    330: .LR - ,
                    331: then 1 is added (resp. subtracted).
                    332: As a consequence of this rule and rule 9,
                    333: the address
                    334: .L -
                    335: refers to the line before the current line.
                    336: Moreover,
                    337: trailing
                    338: .L +
                    339: and
                    340: .L -
                    341: characters
                    342: have cumulative effect, so
                    343: .L --
                    344: refers to the current
                    345: line less 2.
                    346: .TP
                    347: 11.
                    348: To maintain compatibility with earlier versions of the editor,
                    349: the character 
                    350: .L ^
                    351: in addresses is 
                    352: equivalent to
                    353: .LR - .
                    354: .PP
                    355: Commands may require zero, one, or two addresses.
                    356: Commands which require no addresses regard the presence
                    357: of an address as an error.
                    358: Commands which accept one or two addresses
                    359: assume default addresses when insufficient are given.
                    360: If more addresses are given than such a command requires,
                    361: the last one or two (depending on what is accepted) are used.
                    362: .PP
                    363: Addresses are separated from each other typically by a comma
                    364: .LR , .
                    365: They may also be separated by a semicolon
                    366: .LR ; .
                    367: In this case the current line 
                    368: is set to
                    369: the previous address before the next address is interpreted.
                    370: If no address precedes a comma or semicolon, line 1 is assumed;
                    371: if no address follows, the last line of the buffer is assumed.
                    372: The second address of any two-address sequence
                    373: must correspond to a line following the line corresponding to the first address.
                    374: .PP
                    375: In the following list of
                    376: .I ed
                    377: commands, the default addresses
                    378: are shown in parentheses.
                    379: The parentheses are not part of
                    380: the address, but are used to show that the given addresses are
                    381: the default.
                    382: `Dot' means the current line.
                    383: .TP
                    384: .RB \*. \|a
                    385: .br
                    386: .ns
                    387: .TP
                    388: <text>
                    389: .br
                    390: .ns
                    391: .TP
                    392: .B .
                    393: Read the given text
                    394: and append it after the addressed line.
                    395: Dot is left
                    396: on the last line input, if there
                    397: were any, otherwise at the addressed line.
                    398: Address 
                    399: .L 0
                    400: is legal for this command; text is placed
                    401: at the beginning of the buffer.
                    402: .TP
                    403: .RB \*(.. \|b [ +- ][\fIpagesize\fP][ pln\fR]
                    404: Browse.
                    405: Print a `page', normally 20 lines.
                    406: The optional 
                    407: .L +
                    408: (default) or
                    409: .L -
                    410: specifies whether the next or previous
                    411: page is to be printed.
                    412: The optional
                    413: .I pagesize
                    414: is the number of lines in a page.
                    415: The optional
                    416: .LR p ,
                    417: .LR n ,
                    418: or 
                    419: .L l
                    420: causes printing in the specified format, initially
                    421: .LR p .
                    422: Pagesize and format are remembered between 
                    423: .L b
                    424: commands.
                    425: Dot is left at the last line displayed.
                    426: .TP
                    427: .RB \*(.. \|c
                    428: .br
                    429: .ns
                    430: .TP
                    431: <text>
                    432: .br
                    433: .ns
                    434: .TP
                    435: .B .
                    436: .br
                    437: Change.
                    438: Delete the addressed lines, then accept input
                    439: text to replace these lines.
                    440: Dot is left at the last line input; if there were none,
                    441: it is left at the line preceding the deleted lines.
                    442: .TP
                    443: .RB \*(.. \|d
                    444: Delete the addressed lines from the buffer.
                    445: Dot is set to the line following the last line deleted, or to
                    446: the last line of the buffer if the deleted lines had no successor.
                    447: .TP
                    448: .BI e " filename"
                    449: Edit.
                    450: Delete the entire contents of the buffer;
                    451: then read the named file into the buffer.
                    452: Dot is set to the last line of the buffer.
                    453: The number of characters read is typed.
                    454: The file name is remembered for possible use in later
                    455: .LR e ,
                    456: .LR r ,
                    457: or
                    458: .L w
                    459: commands.
                    460: If
                    461: .I filename
                    462: is missing, the remembered name is used.
                    463: .TP
                    464: .BI E " filename"
                    465: Unconditional
                    466: .LR e ;
                    467: see `DIAGNOSTICS' below.
                    468: .TP
                    469: .BI f " filename"
                    470: Print the currently remembered file name.
                    471: If
                    472: .I filename
                    473: is given,
                    474: the currently remembered file name is first changed to
                    475: .I filename.
                    476: .TP
                    477: .RB \*(1$ \|g/\fIregular\ expression\fP/\fIcommand\ list\fP
                    478: .PD 0
                    479: .TP
                    480: .RB \*(1$ \|g/\fIregular\ expression\fP/
                    481: .TP
                    482: .RB \*(1$ \|g/\fIregular\ expression\fP
                    483: .PD
                    484: Global.
                    485: First mark every line which matches
                    486: the given
                    487: .I regular expression.
                    488: Then for every such line, execute the
                    489: .I command list
                    490: with dot initially set to that line.
                    491: A single command or the first of multiple commands
                    492: appears on the same line with the global command.
                    493: All lines of a multi-line list except the last line must end with
                    494: .LR \e .
                    495: The
                    496: .RB \&` \&. \&'
                    497: terminating input mode for an
                    498: .LR a ,
                    499: .LR i ,
                    500: .L c
                    501: command may be omitted if it would be on the
                    502: last line of the command list.
                    503: The commands
                    504: .L g
                    505: and
                    506: .L v
                    507: are not permitted in the command list.
                    508: Any character other than space or newline may
                    509: be used instead of 
                    510: .L /
                    511: to delimit the regular expression.
                    512: The second and third forms mean
                    513: .BI g/ regular\ expression /p .
                    514: .TP
                    515: .RB (\| .\| ) \|i
                    516: .PD 0
                    517: .TP
                    518: <text>
                    519: .TP
                    520: .B .
                    521: Insert the given text before the addressed line.
                    522: Dot is left at the last line input, or, if there were none,
                    523: at the line before the addressed line.
                    524: This command differs from the
                    525: .I a
                    526: command only in the placement of the
                    527: text.
                    528: .PD
                    529: .TP
                    530: .RB (\| .,.+1 \|) \|j
                    531: Join the addressed lines into a single line;
                    532: intermediate newlines are deleted.
                    533: Dot is left at the resulting line.
                    534: .TP
                    535: .RB \*. \|k\fIx\fP
                    536: Mark the addressed line with name
                    537: .I x,
                    538: which must be a lower-case letter.
                    539: The address form
                    540: .BI \' x
                    541: then addresses this line.
                    542: .ne 2.5
                    543: .TP
                    544: .RB \*(.. \|l
                    545: List.
                    546: Print the addressed lines in an unambiguous way:
                    547: a tab is printed as
                    548: .LR \et ,
                    549: a backspace as
                    550: .LR \eb ,
                    551: backslashes as
                    552: .LR \e\e ,
                    553: and non-printing characters as
                    554: printed as a backslash followed by three octal digits.
                    555: Long lines are folded,
                    556: with the second and subsequent sub-lines indented one tab stop.
                    557: If the last character in the line is a blank,
                    558: it is followed by
                    559: .LR \en .
                    560: An
                    561: .L l
                    562: may be appended, like
                    563: .LR p ,
                    564: to any non-I/O command.
                    565: .TP
                    566: .RB \*(.. \|m\fIa
                    567: Move.
                    568: Reposition the addressed lines after the line
                    569: addressed by
                    570: .IR a .
                    571: Dot is left at the last moved line.
                    572: .TP
                    573: .RB \*(.. \|n
                    574: Number.
                    575: Perform
                    576: .LR p ,
                    577: prefixing each line with its line number and a tab.
                    578: An
                    579: .L n
                    580: may be appended, like
                    581: .LR p ,
                    582: to any non-I/O command.
                    583: .TP
                    584: .RB \*(.. \|p
                    585: Print the addressed lines.
                    586: Dot is left at the last line printed.
                    587: A
                    588: .L p
                    589: appended to any non-I/O command causes the then current line
                    590: to be printed after the command is executed.
                    591: .TP
                    592: .RB \*(.. \|P
                    593: This command is a synonym for
                    594: .LR p .
                    595: .TP
                    596: .B q
                    597: Quit the editor.
                    598: No automatic write
                    599: of a file is done.
                    600: .TP
                    601: .B Q
                    602: Quit unconditionally; see `DIAGNOSTICS' below.
                    603: .TP
                    604: .RB ( $ )\|r\ \fIfilename\fP
                    605: Read in the given file after the addressed line.
                    606: If no
                    607: .I filename
                    608: is given, the remembered file name is used.
                    609: The file name is remembered if there were no
                    610: remembered file name already.
                    611: If the read is successful, the number of characters
                    612: read is typed.
                    613: Dot is left at the last line read in from the file.
                    614: .TP
                    615: .RB \*(.. \|s\fIn\fP/\fIregular\ expression\fP/\fIreplacement\fP/
                    616: .PD 0
                    617: .TP
                    618: .RB \*(.. \|s\fIn\fP/\fIregular\ expression\fP/\fIreplacement\fP/g
                    619: .TP
                    620: .RB \*(.. \|s\fIn\fP/\fIregular\ expression\fP/\fIreplacement\fP
                    621: .PD
                    622: Substitute.
                    623: Search each addressed
                    624: line for an occurrence of the specified regular expression.
                    625: On each line in which
                    626: .I n
                    627: matches are found
                    628: .RI ( n
                    629: defaults to 1 if missing),
                    630: the
                    631: .IR n th
                    632: matched string is replaced by the replacement specified.
                    633: If the global replacement indicator 
                    634: .L g
                    635: appears after the command,
                    636: all subsequent matches on the line are also replaced.
                    637: It is an error for the substitution to fail on all addressed lines.
                    638: Any character other than space or newline
                    639: may be used instead of 
                    640: .L /
                    641: to delimit the regular expression
                    642: and the replacement.
                    643: Dot is left at the last line substituted.
                    644: The third form means
                    645: .BI s n / regular\ expression / replacement\fP/p\fR.
                    646: The second
                    647: .L /
                    648: may be omitted if the replacement is
                    649: empty.
                    650: .IP
                    651: An ampersand 
                    652: .L &
                    653: appearing in the replacement
                    654: is replaced by the string matching the regular expression.
                    655: The characters
                    656: .BI \e n,
                    657: where
                    658: .I n
                    659: is a digit,
                    660: are replaced by the text matched by the
                    661: .IR n -th
                    662: regular subexpression
                    663: enclosed between
                    664: .L \e(
                    665: and
                    666: .LR \e) .
                    667: When
                    668: nested, parenthesized subexpressions
                    669: are present,
                    670: .I n
                    671: is determined by counting occurrences of
                    672: .LR \e (
                    673: starting from the left.
                    674: .IP
                    675: A literal 
                    676: .LR & ,
                    677: .LR / ,
                    678: .L \e
                    679: or newline may be included in a replacement
                    680: by prefixing it with
                    681: .LR \e .
                    682: .TP
                    683: .RB \*(.. \|t\|\fIa
                    684: Transfer.
                    685: Copy the addressed lines 
                    686: after the line addressed by
                    687: .I a.
                    688: Dot is left at the last line of the copy.
                    689: .TP
                    690: .RB \*(.. \|u
                    691: Undo.
                    692: Restore the preceding contents
                    693: of the current line, which must be the last line
                    694: in which a substitution was made.
                    695: .TP
                    696: .RB \*(1$ \|v/\fIregular\ expression\fP/\fIcommand\ list\fP
                    697: .PD 0
                    698: .TP
                    699: .RB \*(1$ \|v/\fIregular\ expression\fP/
                    700: .TP
                    701: .RB \*(1$ \|v/\fIregular\ expression\fP
                    702: .PD
                    703: This command is the same as the global command
                    704: .L g
                    705: except that the command list is executed with
                    706: dot initially set to every line
                    707: .I except
                    708: those
                    709: matching the regular expression.
                    710: .TP
                    711: .RB \*(1$ \|w " \fIfilename\fP"
                    712: Write the addressed lines onto
                    713: the given file.
                    714: If the file does not exist,
                    715: it is created with mode 666 (readable and writable by everyone).
                    716: If no
                    717: .I filename
                    718: is given, the remembered file name, if any, is used.
                    719: The file name is remembered if there were no 
                    720: remembered file name already.
                    721: Dot is unchanged.
                    722: If the write is successful, the number of characters written is
                    723: printed.
                    724: .TP
                    725: .RB \*(1$ \|W " \fIfilename\fP"
                    726: Perform
                    727: .LR w ,
                    728: but append to, instead of overwriting, any existing file contents.
                    729: .TP
                    730: .RB ( $ ) \|=
                    731: Print the line number of the addressed line.
                    732: Dot is unchanged.
                    733: .TP
                    734: .BI ! shell\ command
                    735: Send the remainder of the line after the 
                    736: .L !
                    737: to
                    738: .IR sh (1)
                    739: to be interpreted as a command.
                    740: Dot is unchanged.
                    741: .TP
                    742: .RB (\| .+1 )\|<newline>
                    743: An address without a command is taken as a
                    744: .L p 
                    745: command.
                    746: A terminal
                    747: .L /
                    748: may be omitted from the address.
                    749: A blank line alone is equivalent to
                    750: .LR .+1p ;
                    751: it is useful
                    752: for stepping through text.
                    753: .PP
                    754: If an interrupt signal 
                    755: .SM (ASCII DEL)
                    756: is sent,
                    757: .I ed
                    758: prints a 
                    759: .L ?
                    760: and returns to its command level.
                    761: .PP
                    762: When reading a file,
                    763: .I ed
                    764: discards
                    765: .SM ASCII NUL
                    766: characters
                    767: and all characters after the last newline.
                    768: It refuses to read files containing non-\c
                    769: .SM ASCII
                    770: characters.
                    771: .SH FILES
                    772: .F /tmp/e*
                    773: .br
                    774: .F ed.hup
                    775: \ \ work is saved here if terminal hangs up
                    776: .SH "SEE ALSO"
                    777: .IR sam (9.1), 
                    778: .IR sed (1), 
                    779: .IR vi (1)
                    780: .SH DIAGNOSTICS
                    781: .BI ? name
                    782: for inaccessible file;
                    783: .L ?TMP
                    784: for temporary file overflow;
                    785: .L ?
                    786: for errors in commands or other overflows.
                    787: .PP
                    788: To protect against throwing away valuable work,
                    789: a
                    790: .L q
                    791: or
                    792: .L e
                    793: command is considered to be in error if the buffer has
                    794: been modified since the last
                    795: .LR w ,
                    796: .LR q ,
                    797: or
                    798: .L e
                    799: command.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.