xref: /original-bsd/old/sed/sed.1 (revision b1dc0eed)
1.\" Copyright (c) 1991 The Regents of the University of California.
2.\" All rights reserved.
3.\"
4.\" This code is derived from software contributed to Berkeley by
5.\" the Institute of Electrical and Electronics Engineers, Inc.
6.\"
7.\" %sccs.include.redist.roff%
8.\"
9.\"     @(#)sed.1	6.7 (Berkeley) 07/25/92
10.\"
11.Dd
12.Dt SED 1
13.Os
14.Sh NAME
15.Nm sed
16.Nd stream editor.
17.Sh SYNOPSIS
18.Nm sed
19.Op Fl n
20.Ar script
21.Ar
22.Nm sed
23.Op Fl n
24.Op Fl e Ar script
25.Op Fl f Ar script_file
26.Ar
27.Sh DESCRIPTION
28The
29.Nm sed
30utility is a stream editor which reads one or more
31text files, applies given editing command scripts,
32and writes the results to standard output.
33The script of editing commands can be given in the command
34line, or can be contained in the file
35.Ar script_file .
36.Pp
37Options:
38.Bl -tag -width indent
39.It Fl e Ar script
40The command line
41.Ar script
42is used to edit the input.
43If multiple
44.Fl e
45options are given, the scripts are
46applied in the order given to each line of the
47input files.
48If a
49.Fl f
50option is given in addition
51to
52.Fl e ,
53lines are acted upon by scripts first.
54.It Fl f Ar script_file
55The file
56.Ar script_file
57is expected to contain editing commands, one per line,
58and these commands are applied to the input.
59If multiple
60.Fl f
61options are given, the commands in the
62.Ar script_file Ns s
63are applied in
64the order given to each line of the input
65files.
66If a
67.Fl e
68option is given in addition to
69.Fl f ,
70lines are acted upon by
71the commands in the
72.At script_file Ns s
73first.
74.It Fl n
75The
76.Fl n
77option suppresses the default output, which normally
78passes each line, after it is examined for editing,
79to standard output.
80Therefore, only lines explicitly
81selected for output are written.
82.El
83.Pp
84The following operands are available:
85.Bl -tag -width file
86.It Ar file
87A pathname of a file whose contents are read and
88edited.
89If multiple file operands are given,
90the named files are read in the order given and
91the concatenation is edited.
92If no file operands
93are given, the standard input is used.
94.It Ar script
95The script consists of one or more editing
96instructions that are entered on the command line.
97.El
98.\" .Pp
99.\" The following environment variable affects the execution of
100.\" sed:
101.\" .It Ev LC_CTYPE
102.\" The locale for character classification.
103.Pp
104.Bd -filled -offset indent -compact
105.Op address Op ,address
106function
107.Op arguments
108.Ed
109.Pp
110In default operation,
111.Nm sed
112cyclically copies a line of input
113into a pattern space (unless there is something left after a
114.Cm D
115command), applies in sequence all commands whose addresses
116select that pattern space, and at the end of the script
117copies the pattern space to the standard output (except
118under
119.Fl n )
120and deletes the pattern space.
121.Pp
122Some of the commands use a hold space to save all or part of
123the pattern space for
124subsequent retrieval.
125.\" The pattern and hold spaces are each
126.\" limited to
127.\" .Pf { Dv SED_PATTERN_MAX Ns }
128.\" bytes.
129.Pp
130An address is either no address; a decimal number that
131counts input lines cumulatively across files; a
132.Ql $
133that
134addresses the last line of input; a context address; or
135regular expression.
136.Pp
137A command line with no addresses selects every pattern
138space.
139.Pp
140A command line with one address selects each pattern space
141that matches the address.
142.Pp
143A command line with two addresses selects the inclusive
144range from the first pattern space that matches the first
145address through the next pattern space which matches the
146second.
147(If the second address is a number less than or
148equal to the line number first selected, only one line is
149selected.)
150Starting at the first line following the
151selected range,
152.Nm sed
153looks again for the first address.
154Thereafter the process is repeated.
155.Pp
156Editing commands can be applied only to non-selected pattern
157spaces by use of the negation function
158.Cm \&!
159(See below.)
160.Pp
161The
162.Nm sed
163utility uses basic regular expressions, as are found in the
164editor
165.Xr ed 1 ,
166with the following additions:
167.Pp
168.Bl -enum -offset indent
169.It
170In a context address, the construction
171.Li \e?RE? ,
172where ?
173is any character, is identical to
174.Li /RE/ .
175Note that in the
176context address
177.Li \exabc\exdefx ,
178the second
179.Ql x
180stands for
181itself, so that the regular expression is
182.Li abcxdef .
183.It
184The escape sequence
185.Ql \en
186matches a <newline> embedded
187in the pattern space.
188.It
189A period
190.Ql \&.
191matches any character except the terminal <newline> of the pattern space.
192.El
193.Pp
194In the following list of functions the maximum number of
195permissible addresses for each function is indicated by
196.Op 0addr ,
197.Op 1addr ,
198or
199.Op 2addr ;
200representing zero, one, or two
201addresses.
202.Pp
203The argument text consists of one or more lines.
204Each
205embedded <newline> in the text shall be preceded by a
206backslash.
207Other backslashes in text are treated like
208backslashes in the replacement string of an s command, and
209can be used to protect initial <blank>s against the stripping
210that is done on every script line.
211.Pp
212The
213.Cm r
214and
215.Cm w
216commands take an optional
217.Ar rfile
218(or
219.Ar wfile )
220parameter, separated from the command letter by zero or more
221<blank>s.
222.Pp
223The argument
224.Ar rfile
225or the argument
226.Ar wfile
227shall terminate the
228command line.
229Each
230.Ar wfile
231is created before processing
232begins.
233There can be at most ten distinct
234.Ar wfile
235arguments
236in the script.
237.Pp
238The
239.Cm b , r , s , t ,
240.Cm w , y , \&! ,
241and
242.Cm \&:
243commands take additional
244arguments.
245The following synopses indicate which arguments
246are separated from the commands by <blank>s.
247.Bl -tag -width addrcommandxx
248.It Xo
249.Oo Ad 2addr Oc \&{ command_list \&}
250.Xc
251Executes command_list only when the pattern
252space is selected.
253The {} braces can be preceded
254and followed by white space.
255.It Xo
256.Oo Ad 1addr Oc Ns Cm a Ar text
257.Xc
258Writes text to the standard output after the
259pattern space is written.
260.It Xo
261.Oo Ad 2addr Oc Ns Cm b Ar label
262.Xc
263Branches to the
264.Cm \&:
265command bearing the label.
266If label is empty, branch to the end of the
267script.
268.It Xo
269.Oo Ad 2addr Oc Ns Cm c Ar text
270.Xc
271Deletes the pattern space.
272With 0 or 1
273address or at the end of a 2-address range,
274places text on the output.
275.It Xo
276.Oo Ad 2addr Oc Ns Cm d
277.Xc
278Deletes the pattern space and starts the next
279cycle.
280.It Xo
281.Oo Ad 2addr Oc Ns Cm D
282.Xc
283Deletes the initial segment of the pattern
284space through the first <newline> and starts
285the next cycle.
286.It Xo
287.Oo Ad 2addr Oc Ns Cm g
288.Xc
289Replaces the contents of the pattern space by
290the contents of the hold space.
291.It Xo
292.Oo Ad 2addr Oc Ns Cm G
293.Xc
294Appends the contents of the hold space to the
295pattern space.
296.It Xo
297.Oo Ad 2addr Oc Ns Cm h
298.Xc
299Replaces the contents of the hold space by
300the contents of the pattern space.
301.It Xo
302.Oo Ad 2addr Oc Ns Cm H
303.Xc
304Appends the contents of the pattern space to
305the hold space.
306.It Xo
307.Oo Ad 1addr Oc Ns Cm i Ar text
308.Xc
309Writes text to the standard output before the
310pattern space is written.
311.It Xo
312.Oo Ad 2addr Oc Ns Cm l
313.Xc
314Lists the pattern space on the standard out-
315put in an unambiguous form.
316Nonprinting
317characters are listed as hexadecimal digit
318pairs, with a preceding backslash, with the
319following exceptions:
320.Bl -column <carriagexreturn> -offset indent
321<alert>	\ea
322<backslash>	\e\e
323<backspace>	\eb
324<carriage return>	\er
325<form-feed>	\ef
326<newline>	\en
327<tab>	\et
328<vertical tab>	\ev
329.El
330.Pp
331Long lines are folded; the length at which
332folding occurs is ungiven, but should be
333appropriate for the output device.
334.It Xo
335.Oo Ad 2addr Oc Ns Cm n
336.Xc
337Copies the pattern space to the standard output
338and replaces the pattern space with the
339next line of input.
340.It Xo
341.Oo Ad 2addr Oc Ns Cm N
342.Xc
343Appends the next line of input to the pattern
344space, using an embedded <newline> to
345separate the appended material from the
346original material.
347Note that the current line
348number changes.
349.It Xo
350.Oo Ad 2addr Oc Ns Cm p
351.Xc
352Copies
353.Op prints
354the pattern space to the
355standard output.
356.It Xo
357.Oo Ad 2addr Oc Ns Cm P
358.Xc
359Copies
360.Op prints
361the pattern space, up to the
362first <newline>, to the standard output.
363.It Xo
364.Oo Ad 1addr Oc Ns Cm q
365.Xc
366Branches to the end of the script and quits
367without starting a new cycle.
368.It Xo
369.Oo Ad 1addr Oc Ns Cm r Ar rfile
370.Xc
371Read the contents of rfile.
372Place them on the
373output before reading the next input line.
374.It Xo
375.Oo Ad 2addr Oc Ns \\*(cMs\\*(dF/\\*(aRregular expression\\*(dF/\\*(aRreplacement string\\*(dF/flags
376.Xc
377Substitutes the replacement string for
378instances of the regular expression in the
379pattern space.
380Any character can be used
381instead of
382.Ql / .
383The value of flags is zero or
384more of:
385.Bl -tag -width Ds
386.It Ar n
387n=1-512.  Substitutes for the
388.Ar n Ns th
389occurrence only of the regular
390expression found within the pattern space.
391.It Cm g
392Globally substitutes for all
393non-overlapping instances of the regular
394expression rather than just
395the first one.  If both
396.Cm g
397and
398.Cm n
399are given,
400.Cm g
401takes precedence.
402.It Cm p
403Prints the pattern space if a
404replacement was made.
405.It Cm w Ar wfile
406Write.  Appends the pattern space
407to
408.Ar wfile
409if a replacement was
410made.
411.El
412.It Xo
413.Oo Ad 2addr Oc Ns Cm t Ar label
414.Xc
415Test.
416Branches to the
417.Cm \&:
418command bearing the
419label if any substitutions have been made
420since the most recent reading of an input
421line or execution of a
422.Cm t .
423If label is empty,
424branches to the end of the script.
425.It Xo
426.Oo Ad 2addr Oc Ns Cm w Ar wfile
427.Xc
428Appends
429.Op writes
430the pattern space to
431.Ar wfile .
432.It Xo
433.Oo Ad 2addr Oc Ns Cm x
434.Xc
435Exchanges the contents of the pattern and
436hold spaces.
437.It Xo
438.Oo Ad 2addr Oc Ns \\*(cMy\\*(dF/\\*(aRstring1\\*(dF/\\*(aRstring2\\*(dF/
439.Xc
440Replaces all occurrences of collating
441elements in
442.Ar string1
443with the corresponding
444collating element in
445.Ar string2 .
446The lengths of
447.Ar string1
448and
449.Ar string2
450shall be equal.
451.It Xo
452.Oo Ad 2addr Oc Ns \\*(cM!\\*(dFfunction
453.Xc
454Applies the function (or group, if function
455is {) only to the lines that are not selected
456by the address(es).
457.It Xo
458.Oo Ad 0addr Oc Ns \\*(cM:\\*(dFlabel
459.Xc
460This command does nothing; it bears a label
461for the b and t commands to branch to.
462.It Xo
463.Oo Ad 1addr Oc Ns Cm \&=
464.Xc
465Places the current line number on the standard
466output as a line with its own line
467number.
468.It Xo
469.Oo Ad 0addr Oc
470.Xc
471An empty command is ignored.
472.It Xo
473.Oo Ad 0addr Oc Cm #
474.Xc
475If a
476.Cm #
477appears as the first character on any
478line of a script file, that entire line is
479ignored (treated as a comment), with the single
480exception that if the first line of the
481script file begins with
482.Cm Ns #n ,
483the default
484output is suppressed.
485.El
486.Pp
487The
488.Nm sed
489utility exits 0 on success, and >0 if an error occurs.
490.Pp
491If one or more of the input (not script) files cannot be
492opened for reading,
493.Nm sed
494continues to process the remaining
495files.
496.Sh STANDARDS
497The
498.Nm sed
499utility is expected to be
500.St -p1003.2
501compatible.
502