~ubuntu-branches/ubuntu/lucid/9base/lucid

« back to all changes in this revision

Viewing changes to sed/sed.1

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2006-01-25 15:33:00 UTC
  • Revision ID: james.westby@ubuntu.com-20060125153300-6hh4p9wx8iqqply5
Tags: upstream-2
ImportĀ upstreamĀ versionĀ 2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.TH SED 1
 
2
.SH NAME
 
3
sed \- stream editor
 
4
.SH SYNOPSIS
 
5
.B sed
 
6
[
 
7
.B -n
 
8
]
 
9
[
 
10
.B -g
 
11
]
 
12
[
 
13
.B -e
 
14
.I script
 
15
]
 
16
[
 
17
.B -f
 
18
.I sfile
 
19
]
 
20
[
 
21
.I file ...
 
22
]
 
23
.SH DESCRIPTION
 
24
.I Sed
 
25
copies the named
 
26
.I files
 
27
(standard input default) to the standard output,
 
28
edited according to a script of commands.
 
29
The
 
30
.B -f
 
31
option causes the script to be taken from file
 
32
.IR sfile ;
 
33
these options accumulate.
 
34
If there is just one
 
35
.B -e
 
36
option and no
 
37
.BR -f 's,
 
38
the flag
 
39
.B -e
 
40
may be omitted.
 
41
The
 
42
.B -n
 
43
option suppresses the default output;
 
44
.B -g
 
45
causes all substitutions to be global, as if suffixed
 
46
.BR g .
 
47
.PP
 
48
A script consists of editing commands, one per line,
 
49
of the following form:
 
50
.IP
 
51
[\fIaddress\fR [\fL,\fI address\fR] ] \fIfunction\fR [\fIargument\fR ...]
 
52
.PP
 
53
In normal operation
 
54
.I sed
 
55
cyclically copies a line of input into a
 
56
.I pattern space
 
57
(unless there is something left after
 
58
 
59
.L D
 
60
command),
 
61
applies in sequence
 
62
all commands whose
 
63
.I addresses
 
64
select that pattern space,
 
65
and at the end of the script copies the pattern space
 
66
to the standard output (except under
 
67
.BR -n )
 
68
and deletes the pattern space.
 
69
.PP
 
70
An
 
71
.I address
 
72
is either a decimal number that counts
 
73
input lines cumulatively across files, a 
 
74
.L $
 
75
that
 
76
addresses the last line of input, or a context address,
 
77
.BI / regular-expression / \f1,
 
78
in the style of
 
79
.IR regexp (7),
 
80
with the added convention that
 
81
.L \en
 
82
matches a
 
83
newline embedded in the pattern space.
 
84
.PP
 
85
A command line with no addresses selects every pattern space.
 
86
.PP
 
87
A command line with
 
88
one address selects each pattern space that matches the address.
 
89
.PP
 
90
A command line with
 
91
two addresses selects the inclusive range from the first
 
92
pattern space that matches the first address through
 
93
the next pattern space that matches
 
94
the second.
 
95
(If the second address is a number less than or equal
 
96
to the line number first selected, only one
 
97
line is selected.)
 
98
Thereafter the process is repeated, looking again for the
 
99
first address.
 
100
.PP
 
101
Editing commands can be applied to non-selected pattern
 
102
spaces by use of the negation function 
 
103
.L !
 
104
(below).
 
105
.PP
 
106
An argument denoted
 
107
.I text
 
108
consists of one or more lines,
 
109
all but the last of which end with 
 
110
.L \e
 
111
to hide the
 
112
newline.
 
113
Backslashes in text are treated like backslashes
 
114
in the replacement string of an 
 
115
.L s
 
116
command,
 
117
and may be used to protect initial blanks and tabs
 
118
against the stripping that is done on
 
119
every script line.
 
120
.PP
 
121
An argument denoted
 
122
.I rfile
 
123
or
 
124
.I wfile
 
125
must terminate the command
 
126
line and must be preceded by exactly one blank.
 
127
Each
 
128
.I wfile
 
129
is created before processing begins.
 
130
There can be at most 120 distinct
 
131
.I wfile
 
132
arguments.
 
133
.TP \w'\fL!\ \fIfunction\fLXXX'u
 
134
.B a\e
 
135
.br
 
136
.ns
 
137
.TP
 
138
.I text
 
139
Append.
 
140
Place
 
141
.I text
 
142
on the output before
 
143
reading the next input line.
 
144
.TP
 
145
.BI b " label"
 
146
Branch to the 
 
147
.B :
 
148
command bearing the
 
149
.IR label .
 
150
If
 
151
.I label
 
152
is empty, branch to the end of the script.
 
153
.TP
 
154
.B c\e
 
155
.br
 
156
.ns
 
157
.TP
 
158
.I text
 
159
Change.
 
160
Delete the pattern space.
 
161
With 0 or 1 address or at the end of a 2-address range, place
 
162
.I text
 
163
on the output.
 
164
Start the next cycle.
 
165
.TP
 
166
.B d
 
167
Delete the pattern space.
 
168
Start the next cycle.
 
169
.TP
 
170
.B D
 
171
Delete the initial segment of the
 
172
pattern space through the first newline.
 
173
Start the next cycle.
 
174
.TP
 
175
.B g
 
176
Replace the contents of the pattern space
 
177
by the contents of the hold space.
 
178
.TP
 
179
.B G
 
180
Append the contents of the hold space to the pattern space.
 
181
.TP
 
182
.B h
 
183
Replace the contents of the hold space by the contents of the pattern space.
 
184
.TP
 
185
.B H
 
186
Append the contents of the pattern space to the hold space.
 
187
.ne 3
 
188
.TP
 
189
.B i\e
 
190
.br
 
191
.ns
 
192
.TP
 
193
.I text
 
194
Insert.
 
195
Place
 
196
.I text
 
197
on the standard output.
 
198
.TP
 
199
.B n
 
200
Copy the pattern space to the standard output.
 
201
Replace the pattern space with the next line of input.
 
202
.TP
 
203
.B N
 
204
Append the next line of input to the pattern space
 
205
with an embedded newline.
 
206
(The current line number changes.)
 
207
.TP
 
208
.B p
 
209
Print.
 
210
Copy the pattern space to the standard output.
 
211
.TP
 
212
.B P
 
213
Copy the initial segment of the pattern space through
 
214
the first newline to the standard output.
 
215
.TP
 
216
.B q
 
217
Quit.
 
218
Branch to the end of the script.
 
219
Do not start a new cycle.
 
220
.TP
 
221
.BI r " rfile"
 
222
Read the contents of
 
223
.IR rfile .
 
224
Place them on the output before reading
 
225
the next input line.
 
226
.TP
 
227
.B s/\fIregular-expression\fP/\fIreplacement\fP/\fIflags
 
228
Substitute the
 
229
.I replacement
 
230
string for instances of the
 
231
.I regular-expression
 
232
in the pattern space.
 
233
Any character may be used instead of 
 
234
.LR / .
 
235
For a fuller description see
 
236
.IR regexp (7).
 
237
.I Flags
 
238
is zero or more of
 
239
.RS
 
240
.TP
 
241
.B g
 
242
Global.
 
243
Substitute for all non-overlapping instances of the
 
244
.I regular expression
 
245
rather than just the
 
246
first one.
 
247
.TP
 
248
.B p
 
249
Print the pattern space if a replacement was made.
 
250
.TP
 
251
.BI w " wfile"
 
252
Write.
 
253
Append the pattern space to
 
254
.I wfile
 
255
if a replacement
 
256
was made.
 
257
.RE
 
258
.TP
 
259
.BI t " label"
 
260
Test.
 
261
Branch to the 
 
262
.L :
 
263
command bearing the
 
264
.I label
 
265
if any
 
266
substitutions have been made since the most recent
 
267
reading of an input line or execution of a 
 
268
.LR t .
 
269
If
 
270
.I label
 
271
is empty, branch to the end of the script.
 
272
.TP
 
273
.B w
 
274
.I wfile
 
275
.br
 
276
Write.
 
277
Append the pattern space to
 
278
.IR wfile .
 
279
.TP
 
280
.B x
 
281
Exchange the contents of the pattern and hold spaces.
 
282
.TP
 
283
.B y/\fIstring1\fP/\fIstring2\fP/
 
284
Transform.
 
285
Replace all occurrences of characters in
 
286
.I string1
 
287
with the corresponding character in
 
288
.IR string2 .
 
289
The lengths of
 
290
.I
 
291
string1
 
292
and
 
293
.I string2
 
294
must be equal.
 
295
.TP
 
296
.BI ! "function"
 
297
Don't.
 
298
Apply the
 
299
.I function
 
300
(or group, if
 
301
.I function
 
302
is 
 
303
.LR { )
 
304
only to lines
 
305
.I not
 
306
selected by the address(es).
 
307
.TP
 
308
.BI : " label"
 
309
This command does nothing; it bears a
 
310
.I label
 
311
for 
 
312
.B b
 
313
and 
 
314
.B t
 
315
commands to branch to.
 
316
.TP
 
317
.B =
 
318
Place the current line number on the standard output as a line.
 
319
.TP
 
320
.B {
 
321
Execute the following commands through a matching 
 
322
.L }
 
323
only when the pattern space is selected.
 
324
.TP
 
325
.B " "
 
326
An empty command is ignored.
 
327
.ne 4
 
328
.SH EXAMPLES
 
329
.TP
 
330
.B sed 10q file
 
331
Print the first 10 lines of the file.
 
332
.TP
 
333
.B sed '/^$/d'
 
334
Delete empty lines from standard input.
 
335
.TP
 
336
.B sed 's/UNIX/& system/g'
 
337
Replace every instance of 
 
338
.L UNIX
 
339
by
 
340
.LR "UNIX system" .
 
341
.PP
 
342
.EX
 
343
sed 's/ *$//    \fRdrop trailing blanks\fP
 
344
/^$/d                   \fRdrop empty lines\fP
 
345
s/  */\e                \fRreplace blanks by newlines\fP
 
346
/g
 
347
/^$/d' chapter*
 
348
.EE
 
349
.ns
 
350
.IP
 
351
Print the files 
 
352
.BR chapter1 ,
 
353
.BR chapter2 ,
 
354
etc. one word to a line.
 
355
.PP
 
356
.EX
 
357
nroff -ms manuscript | sed '
 
358
${
 
359
        /^$/p           \fRif last line of file is empty, print it\fP
 
360
}
 
361
//N                     \fRif current line is empty, append next line\fP
 
362
/^\en$/D'               \fRif two lines are empty, delete the first\fP
 
363
.EE
 
364
.ns
 
365
.IP
 
366
Delete all but one of each group of empty lines from a
 
367
formatted manuscript.
 
368
.SH SOURCE
 
369
.B \*9/src/cmd/sed.c
 
370
.SH SEE ALSO
 
371
.IR ed (1), 
 
372
.IR grep (1), 
 
373
.IR awk (1), 
 
374
.IR lex (1), 
 
375
.IR sam (1),
 
376
.IR regexp (7)
 
377
.br
 
378
L. E. McMahon,
 
379
`SED \(em A Non-interactive Text Editor',
 
380
Unix Research System Programmer's Manual, Volume 2.
 
381
.SH BUGS
 
382
If input is from a pipe, buffering may consume
 
383
characters beyond a line on which a 
 
384
.L q
 
385
command is executed.