xref: /freebsd/usr.bin/sed/sed.1 (revision 53daef245bf6c133adea46c1633ecafeba06222c)
19b50d902SRodney W. Grimes.\" Copyright (c) 1992, 1993
29b50d902SRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
39b50d902SRodney W. Grimes.\"
49b50d902SRodney W. Grimes.\" This code is derived from software contributed to Berkeley by
59b50d902SRodney W. Grimes.\" the Institute of Electrical and Electronics Engineers, Inc.
69b50d902SRodney W. Grimes.\"
79b50d902SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
89b50d902SRodney W. Grimes.\" modification, are permitted provided that the following conditions
99b50d902SRodney W. Grimes.\" are met:
109b50d902SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
119b50d902SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
129b50d902SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
139b50d902SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
149b50d902SRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
159b50d902SRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software
169b50d902SRodney W. Grimes.\"    must display the following acknowledgement:
179b50d902SRodney W. Grimes.\"	This product includes software developed by the University of
189b50d902SRodney W. Grimes.\"	California, Berkeley and its contributors.
199b50d902SRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors
209b50d902SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
219b50d902SRodney W. Grimes.\"    without specific prior written permission.
229b50d902SRodney W. Grimes.\"
239b50d902SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
249b50d902SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
259b50d902SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
269b50d902SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
279b50d902SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
289b50d902SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
299b50d902SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
309b50d902SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
319b50d902SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
329b50d902SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
339b50d902SRodney W. Grimes.\" SUCH DAMAGE.
349b50d902SRodney W. Grimes.\"
359b50d902SRodney W. Grimes.\"	@(#)sed.1	8.2 (Berkeley) 12/30/93
369b50d902SRodney W. Grimes.\"
379b50d902SRodney W. Grimes.Dd "December 30, 1993"
389b50d902SRodney W. Grimes.Dt SED 1
399b50d902SRodney W. Grimes.Os
409b50d902SRodney W. Grimes.Sh NAME
419b50d902SRodney W. Grimes.Nm sed
429b50d902SRodney W. Grimes.Nd stream editor
439b50d902SRodney W. Grimes.Sh SYNOPSIS
449b50d902SRodney W. Grimes.Nm sed
459b50d902SRodney W. Grimes.Op Fl an
469b50d902SRodney W. Grimes.Ar command
479b50d902SRodney W. Grimes.Op Ar file ...
489b50d902SRodney W. Grimes.Nm sed
499b50d902SRodney W. Grimes.Op Fl an
509b50d902SRodney W. Grimes.Op Fl e Ar command
519b50d902SRodney W. Grimes.Op Fl f Ar command_file
529b50d902SRodney W. Grimes.Op Ar file ...
539b50d902SRodney W. Grimes.Sh DESCRIPTION
549b50d902SRodney W. GrimesThe
559b50d902SRodney W. Grimes.Nm sed
569b50d902SRodney W. Grimesutility reads the specified files, or the standard input if no files
579b50d902SRodney W. Grimesare specified, modifying the input as specified by a list of commands.
589b50d902SRodney W. GrimesThe input is then written to the standard output.
599b50d902SRodney W. Grimes.Pp
609b50d902SRodney W. GrimesA single command may be specified as the first argument to
619b50d902SRodney W. Grimes.Nm sed .
629b50d902SRodney W. GrimesMultiple commands may be specified by using the
639b50d902SRodney W. Grimes.Fl e
649b50d902SRodney W. Grimesor
659b50d902SRodney W. Grimes.Fl f
669b50d902SRodney W. Grimesoptions.
679b50d902SRodney W. GrimesAll commands are applied to the input in the order they are specified
689b50d902SRodney W. Grimesregardless of their origin.
699b50d902SRodney W. Grimes.Pp
709b50d902SRodney W. GrimesThe following options are available:
719b50d902SRodney W. Grimes.Bl -tag -width indent
729b50d902SRodney W. Grimes.It Fl a
739b50d902SRodney W. GrimesThe files listed as parameters for the
749b50d902SRodney W. Grimes.Dq w
759b50d902SRodney W. Grimesfunctions are created (or truncated) before any processing begins,
769b50d902SRodney W. Grimesby default.
779b50d902SRodney W. GrimesThe
789b50d902SRodney W. Grimes.Fl a
799b50d902SRodney W. Grimesoption causes
809b50d902SRodney W. Grimes.Nm sed
819b50d902SRodney W. Grimesto delay opening each file until a command containing the related
829b50d902SRodney W. Grimes.Dq w
839b50d902SRodney W. Grimesfunction is applied to a line of input.
849b50d902SRodney W. Grimes.It Fl e Ar command
859b50d902SRodney W. GrimesAppend the editing commands specified by the
869b50d902SRodney W. Grimes.Ar command
879b50d902SRodney W. Grimesargument
889b50d902SRodney W. Grimesto the list of commands.
899b50d902SRodney W. Grimes.It Fl f Ar command_file
909b50d902SRodney W. GrimesAppend the editing commands found in the file
919b50d902SRodney W. Grimes.Ar command_file
929b50d902SRodney W. Grimesto the list of commands.
939b50d902SRodney W. GrimesThe editing commands should each be listed on a separate line.
949b50d902SRodney W. Grimes.It Fl n
959b50d902SRodney W. GrimesBy default, each line of input is echoed to the standard output after
969b50d902SRodney W. Grimesall of the commands have been applied to it.
979b50d902SRodney W. GrimesThe
989b50d902SRodney W. Grimes.Fl n
999b50d902SRodney W. Grimesoption suppresses this behavior.
1009b50d902SRodney W. Grimes.El
1019b50d902SRodney W. Grimes.Pp
1029b50d902SRodney W. GrimesThe form of a
1039b50d902SRodney W. Grimes.Nm sed
1049b50d902SRodney W. Grimescommand is as follows:
1059b50d902SRodney W. Grimes.sp
1069b50d902SRodney W. Grimes.Dl [address[,address]]function[arguments]
1079b50d902SRodney W. Grimes.sp
1089b50d902SRodney W. GrimesWhitespace may be inserted before the first address and the function
1099b50d902SRodney W. Grimesportions of the command.
1109b50d902SRodney W. Grimes.Pp
1119b50d902SRodney W. GrimesNormally,
1129b50d902SRodney W. Grimes.Nm sed
1139b50d902SRodney W. Grimescyclically copies a line of input, not including its terminating newline
1149b50d902SRodney W. Grimescharacter, into a
1159b50d902SRodney W. Grimes.Em "pattern space" ,
1169b50d902SRodney W. Grimes(unless there is something left after a
1179b50d902SRodney W. Grimes.Dq D
1189b50d902SRodney W. Grimesfunction),
1199b50d902SRodney W. Grimesapplies all of the commands with addresses that select that pattern space,
1209b50d902SRodney W. Grimescopies the pattern space to the standard output, appending a newline, and
1219b50d902SRodney W. Grimesdeletes the pattern space.
1229b50d902SRodney W. Grimes.Pp
1239b50d902SRodney W. GrimesSome of the functions use a
1249b50d902SRodney W. Grimes.Em "hold space"
1259b50d902SRodney W. Grimesto save all or part of the pattern space for subsequent retrieval.
1269b50d902SRodney W. Grimes.Sh "Sed Addresses"
1279b50d902SRodney W. GrimesAn address is not required, but if specified must be a number (that counts
1289b50d902SRodney W. Grimesinput lines
1299b50d902SRodney W. Grimescumulatively across input files), a dollar
1309b50d902SRodney W. Grimes.Po
1319b50d902SRodney W. Grimes.Dq $
1329b50d902SRodney W. Grimes.Pc
1339b50d902SRodney W. Grimescharacter that addresses the last line of input, or a context address
1349b50d902SRodney W. Grimes(which consists of a regular expression preceded and followed by a
1359b50d902SRodney W. Grimesdelimiter).
1369b50d902SRodney W. Grimes.Pp
1379b50d902SRodney W. GrimesA command line with no addresses selects every pattern space.
1389b50d902SRodney W. Grimes.Pp
1399b50d902SRodney W. GrimesA command line with one address selects all of the pattern spaces
1409b50d902SRodney W. Grimesthat match the address.
1419b50d902SRodney W. Grimes.Pp
1429b50d902SRodney W. GrimesA command line with two addresses selects the inclusive range from
1439b50d902SRodney W. Grimesthe first pattern space that matches the first address through the next
1449b50d902SRodney W. Grimespattern space that matches the second.
1459b50d902SRodney W. Grimes(If the second address is a number less than or equal to the line number
1469b50d902SRodney W. Grimesfirst selected, only that line is selected.)
1479b50d902SRodney W. GrimesStarting at the first line following the selected range,
1489b50d902SRodney W. Grimes.Nm sed
1499b50d902SRodney W. Grimesstarts looking again for the first address.
1509b50d902SRodney W. Grimes.Pp
1519b50d902SRodney W. GrimesEditing commands can be applied to non-selected pattern spaces by use
1529b50d902SRodney W. Grimesof the exclamation character
1539b50d902SRodney W. Grimes.Po
1549b50d902SRodney W. Grimes.Dq !
1559b50d902SRodney W. Grimes.Pc
1569b50d902SRodney W. Grimesfunction.
1579b50d902SRodney W. Grimes.Sh "Sed Regular Expressions"
1589b50d902SRodney W. GrimesThe
1599b50d902SRodney W. Grimes.Nm sed
1609b50d902SRodney W. Grimesregular expressions are basic regular expressions (BRE's, see
1619b50d902SRodney W. Grimes.Xr regex 3
1629b50d902SRodney W. Grimesfor more information).
1639b50d902SRodney W. GrimesIn addition,
1649b50d902SRodney W. Grimes.Nm sed
1659b50d902SRodney W. Grimeshas the following two additions to BRE's:
1669b50d902SRodney W. Grimes.sp
1679b50d902SRodney W. Grimes.Bl -enum -compact
1689b50d902SRodney W. Grimes.It
1699b50d902SRodney W. GrimesIn a context address, any character other than a backslash
1709b50d902SRodney W. Grimes.Po
1719b50d902SRodney W. Grimes.Dq \e
1729b50d902SRodney W. Grimes.Pc
1739b50d902SRodney W. Grimesor newline character may be used to delimit the regular expression.
1749b50d902SRodney W. GrimesAlso, putting a backslash character before the delimiting character
1759b50d902SRodney W. Grimescauses the character to be treated literally.
1769b50d902SRodney W. GrimesFor example, in the context address \exabc\exdefx, the RE delimiter
1779b50d902SRodney W. Grimesis an
1789b50d902SRodney W. Grimes.Dq x
1799b50d902SRodney W. Grimesand the second
1809b50d902SRodney W. Grimes.Dq x
1819b50d902SRodney W. Grimesstands for itself, so that the regular expression is
1829b50d902SRodney W. Grimes.Dq abcxdef .
1839b50d902SRodney W. Grimes.sp
1849b50d902SRodney W. Grimes.It
1859b50d902SRodney W. GrimesThe escape sequence \en matches a newline character embedded in the
1869b50d902SRodney W. Grimespattern space.
1879b50d902SRodney W. GrimesYou can't, however, use a literal newline character in an address or
1889b50d902SRodney W. Grimesin the substitute command.
1899b50d902SRodney W. Grimes.El
1909b50d902SRodney W. Grimes.Pp
1919b50d902SRodney W. GrimesOne special feature of
1929b50d902SRodney W. Grimes.Nm sed
1939b50d902SRodney W. Grimesregular expressions is that they can default to the last regular
1949b50d902SRodney W. Grimesexpression used.
1959b50d902SRodney W. GrimesIf a regular expression is empty, i.e. just the delimiter characters
1969b50d902SRodney W. Grimesare specified, the last regular expression encountered is used instead.
1979b50d902SRodney W. GrimesThe last regular expression is defined as the last regular expression
1989b50d902SRodney W. Grimesused as part of an address or substitute command, and at run-time, not
1999b50d902SRodney W. Grimescompile-time.
2009b50d902SRodney W. GrimesFor example, the command
2019b50d902SRodney W. Grimes.Dq /abc/s//XXX/
2029b50d902SRodney W. Grimeswill substitute
2039b50d902SRodney W. Grimes.Dq XXX
2049b50d902SRodney W. Grimesfor the pattern
2059b50d902SRodney W. Grimes.Dq abc .
2069b50d902SRodney W. Grimes.Sh "Sed Functions"
2079b50d902SRodney W. GrimesIn the following list of commands, the maximum number of permissible
2089b50d902SRodney W. Grimesaddresses for each command is indicated by [0addr], [1addr], or [2addr],
2099b50d902SRodney W. Grimesrepresenting zero, one, or two addresses.
2109b50d902SRodney W. Grimes.Pp
2119b50d902SRodney W. GrimesThe argument
2129b50d902SRodney W. Grimes.Em text
2139b50d902SRodney W. Grimesconsists of one or more lines.
2149b50d902SRodney W. GrimesTo embed a newline in the text, precede it with a backslash.
2159b50d902SRodney W. GrimesOther backslashes in text are deleted and the following character
2169b50d902SRodney W. Grimestaken literally.
2179b50d902SRodney W. Grimes.Pp
2189b50d902SRodney W. GrimesThe
2199b50d902SRodney W. Grimes.Dq r
2209b50d902SRodney W. Grimesand
2219b50d902SRodney W. Grimes.Dq w
2229b50d902SRodney W. Grimesfunctions take an optional file parameter, which should be separated
2239b50d902SRodney W. Grimesfrom the function letter by white space.
2249b50d902SRodney W. GrimesEach file given as an argument to
2259b50d902SRodney W. Grimes.Nm sed
2269b50d902SRodney W. Grimesis created (or its contents truncated) before any input processing begins.
2279b50d902SRodney W. Grimes.Pp
2289b50d902SRodney W. GrimesThe
2299b50d902SRodney W. Grimes.Dq b ,
2309b50d902SRodney W. Grimes.Dq r ,
2319b50d902SRodney W. Grimes.Dq s ,
2329b50d902SRodney W. Grimes.Dq t ,
2339b50d902SRodney W. Grimes.Dq w ,
2349b50d902SRodney W. Grimes.Dq y ,
2359b50d902SRodney W. Grimes.Dq ! ,
2369b50d902SRodney W. Grimesand
2379b50d902SRodney W. Grimes.Dq \&:
2389b50d902SRodney W. Grimesfunctions all accept additional arguments.
2399b50d902SRodney W. GrimesThe following synopses indicate which arguments have to be separated from
2409b50d902SRodney W. Grimesthe function letters by white space characters.
2419b50d902SRodney W. Grimes.Pp
2429b50d902SRodney W. GrimesTwo of the functions take a function-list.
2439b50d902SRodney W. GrimesThis is a list of
2449b50d902SRodney W. Grimes.Nm sed
2459b50d902SRodney W. Grimesfunctions separated by newlines, as follows:
2469b50d902SRodney W. Grimes.Bd -literal -offset indent
2479b50d902SRodney W. Grimes{ function
2489b50d902SRodney W. Grimes  function
2499b50d902SRodney W. Grimes  ...
2509b50d902SRodney W. Grimes  function
2519b50d902SRodney W. Grimes}
2529b50d902SRodney W. Grimes.Ed
2539b50d902SRodney W. Grimes.Pp
2549b50d902SRodney W. GrimesThe
2559b50d902SRodney W. Grimes.Dq {
2569b50d902SRodney W. Grimescan be preceded by white space and can be followed by white space.
2579b50d902SRodney W. GrimesThe function can be preceded by white space.
2589b50d902SRodney W. GrimesThe terminating
2599b50d902SRodney W. Grimes.Dq }
2609b50d902SRodney W. Grimesmust be preceded by a newline or optional white space.
2619b50d902SRodney W. Grimes.sp
2629b50d902SRodney W. Grimes.Bl -tag -width "XXXXXX" -compact
2639b50d902SRodney W. Grimes.It [2addr] function-list
2649b50d902SRodney W. GrimesExecute function-list only when the pattern space is selected.
2659b50d902SRodney W. Grimes.sp
2669b50d902SRodney W. Grimes.It [1addr]a\e
2679b50d902SRodney W. Grimes.It text
2689b50d902SRodney W. Grimes.br
2699b50d902SRodney W. GrimesWrite
2709b50d902SRodney W. Grimes.Em text
2719b50d902SRodney W. Grimesto standard output immediately before each attempt to read a line of input,
2729b50d902SRodney W. Grimeswhether by executing the
2739b50d902SRodney W. Grimes.Dq N
2749b50d902SRodney W. Grimesfunction or by beginning a new cycle.
2759b50d902SRodney W. Grimes.sp
27653daef24SAndreas Schulz.It [2addr]b[label]
2779b50d902SRodney W. GrimesBranch to the
2789b50d902SRodney W. Grimes.Dq \&:
2799b50d902SRodney W. Grimesfunction with the specified label.
2809b50d902SRodney W. GrimesIf the label is not specified, branch to the end of the script.
2819b50d902SRodney W. Grimes.sp
2829b50d902SRodney W. Grimes.It [2addr]c\e
2839b50d902SRodney W. Grimes.It text
2849b50d902SRodney W. Grimes.br
2859b50d902SRodney W. GrimesDelete the pattern space.
2869b50d902SRodney W. GrimesWith 0 or 1 address or at the end of a 2-address range,
2879b50d902SRodney W. Grimes.Em text
2889b50d902SRodney W. Grimesis written to the standard output.
2899b50d902SRodney W. Grimes.sp
2909b50d902SRodney W. Grimes.It [2addr]d
2919b50d902SRodney W. GrimesDelete the pattern space and start the next cycle.
2929b50d902SRodney W. Grimes.sp
2939b50d902SRodney W. Grimes.It [2addr]D
2949b50d902SRodney W. GrimesDelete the initial segment of the pattern space through the first
2959b50d902SRodney W. Grimesnewline character and start the next cycle.
2969b50d902SRodney W. Grimes.sp
2979b50d902SRodney W. Grimes.It [2addr]g
2989b50d902SRodney W. GrimesReplace the contents of the pattern space with the contents of the
2999b50d902SRodney W. Grimeshold space.
3009b50d902SRodney W. Grimes.sp
3019b50d902SRodney W. Grimes.It [2addr]G
3029b50d902SRodney W. GrimesAppend a newline character followed by the contents of the hold space
3039b50d902SRodney W. Grimesto the pattern space.
3049b50d902SRodney W. Grimes.sp
3059b50d902SRodney W. Grimes.It [2addr]h
3069b50d902SRodney W. GrimesReplace the contents of the hold space with the contents of the
3079b50d902SRodney W. Grimespattern space.
3089b50d902SRodney W. Grimes.sp
3099b50d902SRodney W. Grimes.It [2addr]H
3109b50d902SRodney W. GrimesAppend a newline character followed by the contents of the pattern space
3119b50d902SRodney W. Grimesto the hold space.
3129b50d902SRodney W. Grimes.sp
3139b50d902SRodney W. Grimes.It [1addr]i\e
3149b50d902SRodney W. Grimes.It text
3159b50d902SRodney W. Grimes.br
3169b50d902SRodney W. GrimesWrite
3179b50d902SRodney W. Grimes.Em text
3189b50d902SRodney W. Grimesto the standard output.
3199b50d902SRodney W. Grimes.sp
3209b50d902SRodney W. Grimes.It [2addr]l
3219b50d902SRodney W. Grimes(The letter ell.)
3229b50d902SRodney W. GrimesWrite the pattern space to the standard output in a visually unambiguous
3239b50d902SRodney W. Grimesform.
3249b50d902SRodney W. GrimesThis form is as follows:
3259b50d902SRodney W. Grimes.sp
3269b50d902SRodney W. Grimes.Bl -tag -width "carriage-returnXX" -offset indent -compact
3279b50d902SRodney W. Grimes.It backslash
3289b50d902SRodney W. Grimes\e
3299b50d902SRodney W. Grimes.It alert
3309b50d902SRodney W. Grimes\ea
3319b50d902SRodney W. Grimes.It form-feed
3329b50d902SRodney W. Grimes\ef
3339b50d902SRodney W. Grimes.It newline
3349b50d902SRodney W. Grimes\en
3359b50d902SRodney W. Grimes.It carriage-return
3369b50d902SRodney W. Grimes\er
3379b50d902SRodney W. Grimes.It tab
3389b50d902SRodney W. Grimes\et
3399b50d902SRodney W. Grimes.It vertical tab
3409b50d902SRodney W. Grimes\ev
3419b50d902SRodney W. Grimes.El
3429b50d902SRodney W. Grimes.Pp
3439b50d902SRodney W. GrimesNonprintable characters are written as three-digit octal numbers (with a
3449b50d902SRodney W. Grimespreceding backslash) for each byte in the character (most significant byte
3459b50d902SRodney W. Grimesfirst).
3469b50d902SRodney W. GrimesLong lines are folded, with the point of folding indicated by displaying
3479b50d902SRodney W. Grimesa backslash followed by a newline.
3489b50d902SRodney W. GrimesThe end of each line is marked with a
3499b50d902SRodney W. Grimes.Dq $ .
3509b50d902SRodney W. Grimes.sp
3519b50d902SRodney W. Grimes.It [2addr]n
3529b50d902SRodney W. GrimesWrite the pattern space to the standard output if the default output has
3539b50d902SRodney W. Grimesnot been suppressed, and replace the pattern space with the next line of
3549b50d902SRodney W. Grimesinput.
3559b50d902SRodney W. Grimes.sp
3569b50d902SRodney W. Grimes.It [2addr]N
3579b50d902SRodney W. GrimesAppend the next line of input to the pattern space, using an embedded
3589b50d902SRodney W. Grimesnewline character to separate the appended material from the original
3599b50d902SRodney W. Grimescontents.
3609b50d902SRodney W. GrimesNote that the current line number changes.
3619b50d902SRodney W. Grimes.sp
3629b50d902SRodney W. Grimes.It [2addr]p
3639b50d902SRodney W. GrimesWrite the pattern space to standard output.
3649b50d902SRodney W. Grimes.sp
3659b50d902SRodney W. Grimes.It [2addr]P
3669b50d902SRodney W. GrimesWrite the pattern space, up to the first newline character to the
3679b50d902SRodney W. Grimesstandard output.
3689b50d902SRodney W. Grimes.sp
3699b50d902SRodney W. Grimes.It [1addr]q
3709b50d902SRodney W. GrimesBranch to the end of the script and quit without starting a new cycle.
3719b50d902SRodney W. Grimes.sp
3729b50d902SRodney W. Grimes.It [1addr]r file
3739b50d902SRodney W. GrimesCopy the contents of
3749b50d902SRodney W. Grimes.Em file
3759b50d902SRodney W. Grimesto the standard output immediately before the next attempt to read a
3769b50d902SRodney W. Grimesline of input.
3779b50d902SRodney W. GrimesIf
3789b50d902SRodney W. Grimes.Em file
3799b50d902SRodney W. Grimescannot be read for any reason, it is silently ignored and no error
3809b50d902SRodney W. Grimescondition is set.
3819b50d902SRodney W. Grimes.sp
3829b50d902SRodney W. Grimes.It [2addr]s/regular expression/replacement/flags
3839b50d902SRodney W. GrimesSubstitute the replacement string for the first instance of the regular
3849b50d902SRodney W. Grimesexpression in the pattern space.
3859b50d902SRodney W. GrimesAny character other than backslash or newline can be used instead of
3869b50d902SRodney W. Grimesa slash to delimit the RE and the replacement.
3879b50d902SRodney W. GrimesWithin the RE and the replacement, the RE delimiter itself can be used as
3889b50d902SRodney W. Grimesa literal character if it is preceded by a backslash.
3899b50d902SRodney W. Grimes.Pp
3909b50d902SRodney W. GrimesAn ampersand
3919b50d902SRodney W. Grimes.Po
3929b50d902SRodney W. Grimes.Dq &
3939b50d902SRodney W. Grimes.Pc
3949b50d902SRodney W. Grimesappearing in the replacement is replaced by the string matching the RE.
3959b50d902SRodney W. GrimesThe special meaning of
3969b50d902SRodney W. Grimes.Dq &
3979b50d902SRodney W. Grimesin this context can be suppressed by preceding it by a backslash.
3989b50d902SRodney W. GrimesThe string
3999b50d902SRodney W. Grimes.Dq \e# ,
4009b50d902SRodney W. Grimeswhere
4019b50d902SRodney W. Grimes.Dq #
4029b50d902SRodney W. Grimesis a digit, is replaced by the text matched
4039b50d902SRodney W. Grimesby the corresponding backreference expression (see
4049b50d902SRodney W. Grimes.Xr re_format 7 ).
4059b50d902SRodney W. Grimes.Pp
4069b50d902SRodney W. GrimesA line can be split by substituting a newline character into it.
4079b50d902SRodney W. GrimesTo specify a newline character in the replacement string, precede it with
4089b50d902SRodney W. Grimesa backslash.
4099b50d902SRodney W. Grimes.Pp
4109b50d902SRodney W. GrimesThe value of
4119b50d902SRodney W. Grimes.Em flags
4129b50d902SRodney W. Grimesin the substitute function is zero or more of the following:
4139b50d902SRodney W. Grimes.Bl -tag -width "XXXXXX" -offset indent
4149b50d902SRodney W. Grimes.It "0 ... 9"
4159b50d902SRodney W. GrimesMake the substitution only for the N'th occurrence of the regular
4169b50d902SRodney W. Grimesexpression in the pattern space.
4179b50d902SRodney W. Grimes.It g
4189b50d902SRodney W. GrimesMake the substitution for all non-overlapping matches of the
4199b50d902SRodney W. Grimesregular expression, not just the first one.
4209b50d902SRodney W. Grimes.It p
4219b50d902SRodney W. GrimesWrite the pattern space to standard output if a replacement was made.
4229b50d902SRodney W. GrimesIf the replacement string is identical to that which it replaces, it
4239b50d902SRodney W. Grimesis still considered to have been a replacement.
4249b50d902SRodney W. Grimes.It w Em file
4259b50d902SRodney W. GrimesAppend the pattern space to
4269b50d902SRodney W. Grimes.Em file
4279b50d902SRodney W. Grimesif a replacement was made.
4289b50d902SRodney W. GrimesIf the replacement string is identical to that which it replaces, it
4299b50d902SRodney W. Grimesis still considered to have been a replacement.
4309b50d902SRodney W. Grimes.El
4319b50d902SRodney W. Grimes.sp
4329b50d902SRodney W. Grimes.It [2addr]t [label]
4339b50d902SRodney W. GrimesBranch to the
4349b50d902SRodney W. Grimes.Dq :
4359b50d902SRodney W. Grimesfunction bearing the label if any substitutions have been made since the
4369b50d902SRodney W. Grimesmost recent reading of an input line or execution of a
4379b50d902SRodney W. Grimes.Dq t
4389b50d902SRodney W. Grimesfunction.
4399b50d902SRodney W. GrimesIf no label is specified, branch to the end of the script.
4409b50d902SRodney W. Grimes.sp
4419b50d902SRodney W. Grimes.It [2addr]w Em file
4429b50d902SRodney W. GrimesAppend the pattern space to the
4439b50d902SRodney W. Grimes.Em file .
4449b50d902SRodney W. Grimes.sp
4459b50d902SRodney W. Grimes.It [2addr]x
4469b50d902SRodney W. GrimesSwap the contents of the pattern and hold spaces.
4479b50d902SRodney W. Grimes.sp
4489b50d902SRodney W. Grimes.It [2addr]y/string1/string2/
4499b50d902SRodney W. GrimesReplace all occurrences of characters in
4509b50d902SRodney W. Grimes.Em string1
4519b50d902SRodney W. Grimesin the pattern space with the corresponding characters from
4529b50d902SRodney W. Grimes.Em string2 .
4539b50d902SRodney W. GrimesAny character other than a backslash or newline can be used instead of
4549b50d902SRodney W. Grimesa slash to delimit the strings.
4559b50d902SRodney W. GrimesWithin
4569b50d902SRodney W. Grimes.Em string1
4579b50d902SRodney W. Grimesand
4589b50d902SRodney W. Grimes.Em string2 ,
4599b50d902SRodney W. Grimesa backslash followed by any character other than a newline is that literal
4609b50d902SRodney W. Grimescharacter, and a backslash followed by an ``n'' is replaced by a newline
4619b50d902SRodney W. Grimescharacter.
4629b50d902SRodney W. Grimes.sp
4639b50d902SRodney W. Grimes.It [2addr]!function
4649b50d902SRodney W. Grimes.It [2addr]!function-list
4659b50d902SRodney W. GrimesApply the function or function-list only to the lines that are
4669b50d902SRodney W. Grimes.Em not
4679b50d902SRodney W. Grimesselected by the address(es).
4689b50d902SRodney W. Grimes.sp
4699b50d902SRodney W. Grimes.It [0addr]:label
4709b50d902SRodney W. GrimesThis function does nothing; it bears a label to which the
4719b50d902SRodney W. Grimes.Dq b
4729b50d902SRodney W. Grimesand
4739b50d902SRodney W. Grimes.Dq t
4749b50d902SRodney W. Grimescommands may branch.
4759b50d902SRodney W. Grimes.sp
4769b50d902SRodney W. Grimes.It [1addr]=
4779b50d902SRodney W. GrimesWrite the line number to the standard output followed by a newline
4789b50d902SRodney W. Grimescharacter.
4799b50d902SRodney W. Grimes.sp
4809b50d902SRodney W. Grimes.It [0addr]
4819b50d902SRodney W. GrimesEmpty lines are ignored.
4829b50d902SRodney W. Grimes.sp
4839b50d902SRodney W. Grimes.It [0addr]#
4849b50d902SRodney W. GrimesThe
4859b50d902SRodney W. Grimes.Dq #
4869b50d902SRodney W. Grimesand the remainder of the line are ignored (treated as a comment), with
4879b50d902SRodney W. Grimesthe single exception that if the first two characters in the file are
4889b50d902SRodney W. Grimes.Dq #n ,
4899b50d902SRodney W. Grimesthe default output is suppressed.
4909b50d902SRodney W. GrimesThis is the same as specifying the
4919b50d902SRodney W. Grimes.Fl n
4929b50d902SRodney W. Grimesoption on the command line.
4939b50d902SRodney W. Grimes.El
4949b50d902SRodney W. Grimes.Pp
4959b50d902SRodney W. GrimesThe
4969b50d902SRodney W. Grimes.Nm sed
4979b50d902SRodney W. Grimesutility exits 0 on success and >0 if an error occurs.
4989b50d902SRodney W. Grimes.Sh SEE ALSO
4999b50d902SRodney W. Grimes.Xr awk 1 ,
5009b50d902SRodney W. Grimes.Xr ed 1 ,
5019b50d902SRodney W. Grimes.Xr grep 1 ,
5029b50d902SRodney W. Grimes.Xr regex 3 ,
5039b50d902SRodney W. Grimes.Xr re_format 7
5049b50d902SRodney W. Grimes.Sh HISTORY
5059b50d902SRodney W. GrimesA
5069b50d902SRodney W. Grimes.Nm sed
5079b50d902SRodney W. Grimescommand appeared in
5089b50d902SRodney W. Grimes.At v7 .
5099b50d902SRodney W. Grimes.Sh STANDARDS
5109b50d902SRodney W. GrimesThe
5119b50d902SRodney W. Grimes.Nm sed
5129b50d902SRodney W. Grimesfunction is expected to be a superset of the
5139b50d902SRodney W. Grimes.St -p1003.2
5149b50d902SRodney W. Grimesspecification.
515