~ubuntu-branches/ubuntu/utopic/9base/utopic

« back to all changes in this revision

Viewing changes to ed/ed.1

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2010-06-04 17:22:03 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20100604172203-ei85j0da495sr8ut
Tags: 1:6-1
* Adding Kai as co-maintainer.
* Merging upstream version 6.

Show diffs side-by-side

added added

removed removed

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