Blame


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