xref: /freebsd/usr.bin/sed/sed.1 (revision a866e170777b42fd7921eadd6e7e664f3a031d60)
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.\" 4. Neither the name of the University nor the names of its contributors
169b50d902SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
179b50d902SRodney W. Grimes.\"    without specific prior written permission.
189b50d902SRodney W. Grimes.\"
199b50d902SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
209b50d902SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
219b50d902SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
229b50d902SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
239b50d902SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
249b50d902SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
259b50d902SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
269b50d902SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
279b50d902SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
289b50d902SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
299b50d902SRodney W. Grimes.\" SUCH DAMAGE.
309b50d902SRodney W. Grimes.\"
319b50d902SRodney W. Grimes.\"	@(#)sed.1	8.2 (Berkeley) 12/30/93
32c3aac50fSPeter Wemm.\" $FreeBSD$
339b50d902SRodney W. Grimes.\"
34e4d0177fSTim J. Robbins.Dd July 17, 2004
359b50d902SRodney W. Grimes.Dt SED 1
369b50d902SRodney W. Grimes.Os
379b50d902SRodney W. Grimes.Sh NAME
389b50d902SRodney W. Grimes.Nm sed
399b50d902SRodney W. Grimes.Nd stream editor
409b50d902SRodney W. Grimes.Sh SYNOPSIS
418fe908efSRuslan Ermilov.Nm
42175de1e6SBrian Feldman.Op Fl Ean
439b50d902SRodney W. Grimes.Ar command
4447dec781SRuslan Ermilov.Op Ar
458fe908efSRuslan Ermilov.Nm
46175de1e6SBrian Feldman.Op Fl Ean
479b50d902SRodney W. Grimes.Op Fl e Ar command
489b50d902SRodney W. Grimes.Op Fl f Ar command_file
49839af0c1SJuli Mallett.Op Fl i Ar extension
5047dec781SRuslan Ermilov.Op Ar
519b50d902SRodney W. Grimes.Sh DESCRIPTION
529b50d902SRodney W. GrimesThe
5373a08bb2SPhilippe Charnier.Nm
549b50d902SRodney W. Grimesutility reads the specified files, or the standard input if no files
559b50d902SRodney W. Grimesare specified, modifying the input as specified by a list of commands.
569b50d902SRodney W. GrimesThe input is then written to the standard output.
579b50d902SRodney W. Grimes.Pp
589b50d902SRodney W. GrimesA single command may be specified as the first argument to
598fe908efSRuslan Ermilov.Nm .
609b50d902SRodney W. GrimesMultiple commands may be specified by using the
619b50d902SRodney W. Grimes.Fl e
629b50d902SRodney W. Grimesor
639b50d902SRodney W. Grimes.Fl f
649b50d902SRodney W. Grimesoptions.
659b50d902SRodney W. GrimesAll commands are applied to the input in the order they are specified
669b50d902SRodney W. Grimesregardless of their origin.
679b50d902SRodney W. Grimes.Pp
689b50d902SRodney W. GrimesThe following options are available:
699b50d902SRodney W. Grimes.Bl -tag -width indent
70175de1e6SBrian Feldman.It Fl E
71175de1e6SBrian FeldmanInterpret regular expressions as extended (modern) regular expressions
720ef1d1f5SBrian Feldmanrather than basic regular expressions (BRE's).
730ef1d1f5SBrian FeldmanThe
74175de1e6SBrian Feldman.Xr re_format 7
75175de1e6SBrian Feldmanmanual page fully describes both formats.
769b50d902SRodney W. Grimes.It Fl a
779b50d902SRodney W. GrimesThe files listed as parameters for the
789b50d902SRodney W. Grimes.Dq w
799b50d902SRodney W. Grimesfunctions are created (or truncated) before any processing begins,
809b50d902SRodney W. Grimesby default.
819b50d902SRodney W. GrimesThe
829b50d902SRodney W. Grimes.Fl a
839b50d902SRodney W. Grimesoption causes
8473a08bb2SPhilippe Charnier.Nm
859b50d902SRodney W. Grimesto delay opening each file until a command containing the related
869b50d902SRodney W. Grimes.Dq w
879b50d902SRodney W. Grimesfunction is applied to a line of input.
889b50d902SRodney W. Grimes.It Fl e Ar command
899b50d902SRodney W. GrimesAppend the editing commands specified by the
909b50d902SRodney W. Grimes.Ar command
919b50d902SRodney W. Grimesargument
929b50d902SRodney W. Grimesto the list of commands.
939b50d902SRodney W. Grimes.It Fl f Ar command_file
949b50d902SRodney W. GrimesAppend the editing commands found in the file
959b50d902SRodney W. Grimes.Ar command_file
969b50d902SRodney W. Grimesto the list of commands.
979b50d902SRodney W. GrimesThe editing commands should each be listed on a separate line.
98839af0c1SJuli Mallett.It Fl i Ar extension
99839af0c1SJuli MallettEdit files in-place, saving backups with the specified
100839af0c1SJuli Mallett.Ar extension .
1015d16412dSJuli MallettIf a zero-length
1025d16412dSJuli Mallett.Ar extension
1035d16412dSJuli Mallettis given, no backup will be saved.
1045d16412dSJuli MallettIt is not recommended to give a zero-length
1055d16412dSJuli Mallett.Ar extension
1065d16412dSJuli Mallettwhen in-place editing files, as you risk corruption or partial content
1075d16412dSJuli Mallettin situations where disk space is exhausted, etc.
1089b50d902SRodney W. Grimes.It Fl n
1099b50d902SRodney W. GrimesBy default, each line of input is echoed to the standard output after
1109b50d902SRodney W. Grimesall of the commands have been applied to it.
1119b50d902SRodney W. GrimesThe
1129b50d902SRodney W. Grimes.Fl n
1139b50d902SRodney W. Grimesoption suppresses this behavior.
1149b50d902SRodney W. Grimes.El
1159b50d902SRodney W. Grimes.Pp
1169b50d902SRodney W. GrimesThe form of a
11773a08bb2SPhilippe Charnier.Nm
1189b50d902SRodney W. Grimescommand is as follows:
119726b61abSRuslan Ermilov.Pp
1209b50d902SRodney W. Grimes.Dl [address[,address]]function[arguments]
121726b61abSRuslan Ermilov.Pp
1229b50d902SRodney W. GrimesWhitespace may be inserted before the first address and the function
1239b50d902SRodney W. Grimesportions of the command.
1249b50d902SRodney W. Grimes.Pp
1259b50d902SRodney W. GrimesNormally,
12673a08bb2SPhilippe Charnier.Nm
1279b50d902SRodney W. Grimescyclically copies a line of input, not including its terminating newline
1289b50d902SRodney W. Grimescharacter, into a
1299b50d902SRodney W. Grimes.Em "pattern space" ,
1309b50d902SRodney W. Grimes(unless there is something left after a
1319b50d902SRodney W. Grimes.Dq D
1329b50d902SRodney W. Grimesfunction),
1339b50d902SRodney W. Grimesapplies all of the commands with addresses that select that pattern space,
1349b50d902SRodney W. Grimescopies the pattern space to the standard output, appending a newline, and
1359b50d902SRodney W. Grimesdeletes the pattern space.
1369b50d902SRodney W. Grimes.Pp
1379b50d902SRodney W. GrimesSome of the functions use a
1389b50d902SRodney W. Grimes.Em "hold space"
1399b50d902SRodney W. Grimesto save all or part of the pattern space for subsequent retrieval.
1409b50d902SRodney W. Grimes.Sh "Sed Addresses"
1419b50d902SRodney W. GrimesAn address is not required, but if specified must be a number (that counts
1429b50d902SRodney W. Grimesinput lines
1439b50d902SRodney W. Grimescumulatively across input files), a dollar
144c4d9468eSRuslan Ermilov.Pq Dq $
1459b50d902SRodney W. Grimescharacter that addresses the last line of input, or a context address
1469b50d902SRodney W. Grimes(which consists of a regular expression preceded and followed by a
1479b50d902SRodney W. Grimesdelimiter).
1489b50d902SRodney W. Grimes.Pp
1499b50d902SRodney W. GrimesA command line with no addresses selects every pattern space.
1509b50d902SRodney W. Grimes.Pp
1519b50d902SRodney W. GrimesA command line with one address selects all of the pattern spaces
1529b50d902SRodney W. Grimesthat match the address.
1539b50d902SRodney W. Grimes.Pp
1546a3e8b0aSRuslan ErmilovA command line with two addresses selects an inclusive range.
1556a3e8b0aSRuslan ErmilovThis
1561d2ed2f7SBill Swinglerange starts with the first pattern space that matches the first
1576a3e8b0aSRuslan Ermilovaddress.
1586a3e8b0aSRuslan ErmilovThe end of the range is the next following pattern space
1596a3e8b0aSRuslan Ermilovthat matches the second address.
1606a3e8b0aSRuslan ErmilovIf the second address is a number
1611d2ed2f7SBill Swingleless than or equal to the line number first selected, only that
1626a3e8b0aSRuslan Ermilovline is selected.
1636a3e8b0aSRuslan ErmilovIn the case when the second address is a context
164b6059c5cSDiomidis Spinellisaddress,
165b6059c5cSDiomidis Spinellis.Nm
166b6059c5cSDiomidis Spinellisdoes not re-match the second address against the
1676a3e8b0aSRuslan Ermilovpattern space that matched the first address.
1686a3e8b0aSRuslan ErmilovStarting at the
1692642bed2SGiorgos Keramidasfirst line following the selected range,
17073a08bb2SPhilippe Charnier.Nm
1719b50d902SRodney W. Grimesstarts looking again for the first address.
1729b50d902SRodney W. Grimes.Pp
1739b50d902SRodney W. GrimesEditing commands can be applied to non-selected pattern spaces by use
1749b50d902SRodney W. Grimesof the exclamation character
175c4d9468eSRuslan Ermilov.Pq Dq \&!
1769b50d902SRodney W. Grimesfunction.
1779b50d902SRodney W. Grimes.Sh "Sed Regular Expressions"
1780ef1d1f5SBrian FeldmanThe regular expressions used in
1798fe908efSRuslan Ermilov.Nm ,
1800ef1d1f5SBrian Feldmanby default, are basic regular expressions (BREs, see
1810ef1d1f5SBrian Feldman.Xr re_format 7
182ca802a8aSPhilippe Charnierfor more information), but extended (modern) regular expressions can be used
183ca802a8aSPhilippe Charnierinstead if the
184175de1e6SBrian Feldman.Fl E
1850ef1d1f5SBrian Feldmanflag is given.
1860ef1d1f5SBrian FeldmanIn addition,
187175de1e6SBrian Feldman.Nm
188175de1e6SBrian Feldmanhas the following two additions to regular expressions:
189726b61abSRuslan Ermilov.Pp
1909b50d902SRodney W. Grimes.Bl -enum -compact
1919b50d902SRodney W. Grimes.It
1929b50d902SRodney W. GrimesIn a context address, any character other than a backslash
193c4d9468eSRuslan Ermilov.Pq Dq \e
1949b50d902SRodney W. Grimesor newline character may be used to delimit the regular expression.
1959b50d902SRodney W. GrimesAlso, putting a backslash character before the delimiting character
1969b50d902SRodney W. Grimescauses the character to be treated literally.
1979b50d902SRodney W. GrimesFor example, in the context address \exabc\exdefx, the RE delimiter
1989b50d902SRodney W. Grimesis an
1999b50d902SRodney W. Grimes.Dq x
2009b50d902SRodney W. Grimesand the second
2019b50d902SRodney W. Grimes.Dq x
2029b50d902SRodney W. Grimesstands for itself, so that the regular expression is
2039b50d902SRodney W. Grimes.Dq abcxdef .
204726b61abSRuslan Ermilov.Pp
2059b50d902SRodney W. Grimes.It
2069b50d902SRodney W. GrimesThe escape sequence \en matches a newline character embedded in the
2079b50d902SRodney W. Grimespattern space.
2089b50d902SRodney W. GrimesYou can't, however, use a literal newline character in an address or
2099b50d902SRodney W. Grimesin the substitute command.
2109b50d902SRodney W. Grimes.El
2119b50d902SRodney W. Grimes.Pp
2129b50d902SRodney W. GrimesOne special feature of
21373a08bb2SPhilippe Charnier.Nm
2149b50d902SRodney W. Grimesregular expressions is that they can default to the last regular
2159b50d902SRodney W. Grimesexpression used.
2166a3e8b0aSRuslan ErmilovIf a regular expression is empty, i.e., just the delimiter characters
2179b50d902SRodney W. Grimesare specified, the last regular expression encountered is used instead.
2189b50d902SRodney W. GrimesThe last regular expression is defined as the last regular expression
2199b50d902SRodney W. Grimesused as part of an address or substitute command, and at run-time, not
2209b50d902SRodney W. Grimescompile-time.
2219b50d902SRodney W. GrimesFor example, the command
2229b50d902SRodney W. Grimes.Dq /abc/s//XXX/
2239b50d902SRodney W. Grimeswill substitute
2249b50d902SRodney W. Grimes.Dq XXX
2259b50d902SRodney W. Grimesfor the pattern
2269b50d902SRodney W. Grimes.Dq abc .
2279b50d902SRodney W. Grimes.Sh "Sed Functions"
2289b50d902SRodney W. GrimesIn the following list of commands, the maximum number of permissible
2299b50d902SRodney W. Grimesaddresses for each command is indicated by [0addr], [1addr], or [2addr],
2309b50d902SRodney W. Grimesrepresenting zero, one, or two addresses.
2319b50d902SRodney W. Grimes.Pp
2329b50d902SRodney W. GrimesThe argument
2339b50d902SRodney W. Grimes.Em text
2349b50d902SRodney W. Grimesconsists of one or more lines.
2359b50d902SRodney W. GrimesTo embed a newline in the text, precede it with a backslash.
2369b50d902SRodney W. GrimesOther backslashes in text are deleted and the following character
2379b50d902SRodney W. Grimestaken literally.
2389b50d902SRodney W. Grimes.Pp
2399b50d902SRodney W. GrimesThe
2409b50d902SRodney W. Grimes.Dq r
2419b50d902SRodney W. Grimesand
2429b50d902SRodney W. Grimes.Dq w
2439b50d902SRodney W. Grimesfunctions take an optional file parameter, which should be separated
2449b50d902SRodney W. Grimesfrom the function letter by white space.
2459b50d902SRodney W. GrimesEach file given as an argument to
24673a08bb2SPhilippe Charnier.Nm
2479b50d902SRodney W. Grimesis created (or its contents truncated) before any input processing begins.
2489b50d902SRodney W. Grimes.Pp
2499b50d902SRodney W. GrimesThe
2509b50d902SRodney W. Grimes.Dq b ,
2519b50d902SRodney W. Grimes.Dq r ,
2529b50d902SRodney W. Grimes.Dq s ,
2539b50d902SRodney W. Grimes.Dq t ,
2549b50d902SRodney W. Grimes.Dq w ,
2559b50d902SRodney W. Grimes.Dq y ,
2569b88faecSRuslan Ermilov.Dq \&! ,
2579b50d902SRodney W. Grimesand
2589b50d902SRodney W. Grimes.Dq \&:
2599b50d902SRodney W. Grimesfunctions all accept additional arguments.
2609b50d902SRodney W. GrimesThe following synopses indicate which arguments have to be separated from
2619b50d902SRodney W. Grimesthe function letters by white space characters.
2629b50d902SRodney W. Grimes.Pp
2639b50d902SRodney W. GrimesTwo of the functions take a function-list.
2649b50d902SRodney W. GrimesThis is a list of
26573a08bb2SPhilippe Charnier.Nm
2669b50d902SRodney W. Grimesfunctions separated by newlines, as follows:
2679b50d902SRodney W. Grimes.Bd -literal -offset indent
2689b50d902SRodney W. Grimes{ function
2699b50d902SRodney W. Grimes  function
2709b50d902SRodney W. Grimes  ...
2719b50d902SRodney W. Grimes  function
2729b50d902SRodney W. Grimes}
2739b50d902SRodney W. Grimes.Ed
2749b50d902SRodney W. Grimes.Pp
2759b50d902SRodney W. GrimesThe
2769b50d902SRodney W. Grimes.Dq {
2779b50d902SRodney W. Grimescan be preceded by white space and can be followed by white space.
2789b50d902SRodney W. GrimesThe function can be preceded by white space.
2799b50d902SRodney W. GrimesThe terminating
2809b50d902SRodney W. Grimes.Dq }
2819b50d902SRodney W. Grimesmust be preceded by a newline or optional white space.
282726b61abSRuslan Ermilov.Pp
2839b50d902SRodney W. Grimes.Bl -tag -width "XXXXXX" -compact
2849b50d902SRodney W. Grimes.It [2addr] function-list
2859b50d902SRodney W. GrimesExecute function-list only when the pattern space is selected.
286726b61abSRuslan Ermilov.Pp
2879b50d902SRodney W. Grimes.It [1addr]a\e
2889b50d902SRodney W. Grimes.It text
2899b50d902SRodney W. GrimesWrite
2909b50d902SRodney W. Grimes.Em text
2919b50d902SRodney W. Grimesto standard output immediately before each attempt to read a line of input,
2929b50d902SRodney W. Grimeswhether by executing the
2939b50d902SRodney W. Grimes.Dq N
2949b50d902SRodney W. Grimesfunction or by beginning a new cycle.
295726b61abSRuslan Ermilov.Pp
29653daef24SAndreas Schulz.It [2addr]b[label]
2979b50d902SRodney W. GrimesBranch to the
2989b50d902SRodney W. Grimes.Dq \&:
2999b50d902SRodney W. Grimesfunction with the specified label.
3009b50d902SRodney W. GrimesIf the label is not specified, branch to the end of the script.
301726b61abSRuslan Ermilov.Pp
3029b50d902SRodney W. Grimes.It [2addr]c\e
3039b50d902SRodney W. Grimes.It text
3049b50d902SRodney W. GrimesDelete the pattern space.
3059b50d902SRodney W. GrimesWith 0 or 1 address or at the end of a 2-address range,
3069b50d902SRodney W. Grimes.Em text
3079b50d902SRodney W. Grimesis written to the standard output.
308726b61abSRuslan Ermilov.Pp
3099b50d902SRodney W. Grimes.It [2addr]d
3109b50d902SRodney W. GrimesDelete the pattern space and start the next cycle.
311726b61abSRuslan Ermilov.Pp
3129b50d902SRodney W. Grimes.It [2addr]D
3139b50d902SRodney W. GrimesDelete the initial segment of the pattern space through the first
3149b50d902SRodney W. Grimesnewline character and start the next cycle.
315726b61abSRuslan Ermilov.Pp
3169b50d902SRodney W. Grimes.It [2addr]g
3179b50d902SRodney W. GrimesReplace the contents of the pattern space with the contents of the
3189b50d902SRodney W. Grimeshold space.
319726b61abSRuslan Ermilov.Pp
3209b50d902SRodney W. Grimes.It [2addr]G
3219b50d902SRodney W. GrimesAppend a newline character followed by the contents of the hold space
3229b50d902SRodney W. Grimesto the pattern space.
323726b61abSRuslan Ermilov.Pp
3249b50d902SRodney W. Grimes.It [2addr]h
3259b50d902SRodney W. GrimesReplace the contents of the hold space with the contents of the
3269b50d902SRodney W. Grimespattern space.
327726b61abSRuslan Ermilov.Pp
3289b50d902SRodney W. Grimes.It [2addr]H
3299b50d902SRodney W. GrimesAppend a newline character followed by the contents of the pattern space
3309b50d902SRodney W. Grimesto the hold space.
331726b61abSRuslan Ermilov.Pp
3329b50d902SRodney W. Grimes.It [1addr]i\e
3339b50d902SRodney W. Grimes.It text
3349b50d902SRodney W. GrimesWrite
3359b50d902SRodney W. Grimes.Em text
3369b50d902SRodney W. Grimesto the standard output.
337726b61abSRuslan Ermilov.Pp
3389b50d902SRodney W. Grimes.It [2addr]l
3399b50d902SRodney W. Grimes(The letter ell.)
3409b50d902SRodney W. GrimesWrite the pattern space to the standard output in a visually unambiguous
3419b50d902SRodney W. Grimesform.
3429b50d902SRodney W. GrimesThis form is as follows:
343726b61abSRuslan Ermilov.Pp
3449b50d902SRodney W. Grimes.Bl -tag -width "carriage-returnXX" -offset indent -compact
3459b50d902SRodney W. Grimes.It backslash
34607847cc8SMike Pritchard\e\e
3479b50d902SRodney W. Grimes.It alert
3489b50d902SRodney W. Grimes\ea
3499b50d902SRodney W. Grimes.It form-feed
3509b50d902SRodney W. Grimes\ef
3519b50d902SRodney W. Grimes.It carriage-return
3529b50d902SRodney W. Grimes\er
3539b50d902SRodney W. Grimes.It tab
3549b50d902SRodney W. Grimes\et
3559b50d902SRodney W. Grimes.It vertical tab
3569b50d902SRodney W. Grimes\ev
3579b50d902SRodney W. Grimes.El
3589b50d902SRodney W. Grimes.Pp
3599b50d902SRodney W. GrimesNonprintable characters are written as three-digit octal numbers (with a
3609b50d902SRodney W. Grimespreceding backslash) for each byte in the character (most significant byte
3619b50d902SRodney W. Grimesfirst).
3629b50d902SRodney W. GrimesLong lines are folded, with the point of folding indicated by displaying
3639b50d902SRodney W. Grimesa backslash followed by a newline.
3649b50d902SRodney W. GrimesThe end of each line is marked with a
3659b50d902SRodney W. Grimes.Dq $ .
366726b61abSRuslan Ermilov.Pp
3679b50d902SRodney W. Grimes.It [2addr]n
3689b50d902SRodney W. GrimesWrite the pattern space to the standard output if the default output has
3699b50d902SRodney W. Grimesnot been suppressed, and replace the pattern space with the next line of
3709b50d902SRodney W. Grimesinput.
371726b61abSRuslan Ermilov.Pp
3729b50d902SRodney W. Grimes.It [2addr]N
3739b50d902SRodney W. GrimesAppend the next line of input to the pattern space, using an embedded
3749b50d902SRodney W. Grimesnewline character to separate the appended material from the original
3759b50d902SRodney W. Grimescontents.
3769b50d902SRodney W. GrimesNote that the current line number changes.
377726b61abSRuslan Ermilov.Pp
3789b50d902SRodney W. Grimes.It [2addr]p
3799b50d902SRodney W. GrimesWrite the pattern space to standard output.
380726b61abSRuslan Ermilov.Pp
3819b50d902SRodney W. Grimes.It [2addr]P
3829b50d902SRodney W. GrimesWrite the pattern space, up to the first newline character to the
3839b50d902SRodney W. Grimesstandard output.
384726b61abSRuslan Ermilov.Pp
3859b50d902SRodney W. Grimes.It [1addr]q
3869b50d902SRodney W. GrimesBranch to the end of the script and quit without starting a new cycle.
387726b61abSRuslan Ermilov.Pp
3889b50d902SRodney W. Grimes.It [1addr]r file
3899b50d902SRodney W. GrimesCopy the contents of
3909b50d902SRodney W. Grimes.Em file
3919b50d902SRodney W. Grimesto the standard output immediately before the next attempt to read a
3929b50d902SRodney W. Grimesline of input.
3939b50d902SRodney W. GrimesIf
3949b50d902SRodney W. Grimes.Em file
3959b50d902SRodney W. Grimescannot be read for any reason, it is silently ignored and no error
3969b50d902SRodney W. Grimescondition is set.
397726b61abSRuslan Ermilov.Pp
3989b50d902SRodney W. Grimes.It [2addr]s/regular expression/replacement/flags
3999b50d902SRodney W. GrimesSubstitute the replacement string for the first instance of the regular
4009b50d902SRodney W. Grimesexpression in the pattern space.
4019b50d902SRodney W. GrimesAny character other than backslash or newline can be used instead of
4029b50d902SRodney W. Grimesa slash to delimit the RE and the replacement.
4039b50d902SRodney W. GrimesWithin the RE and the replacement, the RE delimiter itself can be used as
4049b50d902SRodney W. Grimesa literal character if it is preceded by a backslash.
4059b50d902SRodney W. Grimes.Pp
4069b50d902SRodney W. GrimesAn ampersand
407c4d9468eSRuslan Ermilov.Pq Dq &
4089b50d902SRodney W. Grimesappearing in the replacement is replaced by the string matching the RE.
4099b50d902SRodney W. GrimesThe special meaning of
4109b50d902SRodney W. Grimes.Dq &
4119b50d902SRodney W. Grimesin this context can be suppressed by preceding it by a backslash.
4129b50d902SRodney W. GrimesThe string
4139b50d902SRodney W. Grimes.Dq \e# ,
4149b50d902SRodney W. Grimeswhere
4159b50d902SRodney W. Grimes.Dq #
4169b50d902SRodney W. Grimesis a digit, is replaced by the text matched
4179b50d902SRodney W. Grimesby the corresponding backreference expression (see
4189b50d902SRodney W. Grimes.Xr re_format 7 ) .
4199b50d902SRodney W. Grimes.Pp
4209b50d902SRodney W. GrimesA line can be split by substituting a newline character into it.
4219b50d902SRodney W. GrimesTo specify a newline character in the replacement string, precede it with
4229b50d902SRodney W. Grimesa backslash.
4239b50d902SRodney W. Grimes.Pp
4249b50d902SRodney W. GrimesThe value of
4259b50d902SRodney W. Grimes.Em flags
4269b50d902SRodney W. Grimesin the substitute function is zero or more of the following:
4279b50d902SRodney W. Grimes.Bl -tag -width "XXXXXX" -offset indent
42806e482e6SRuslan Ermilov.It Ar N
4291fa600e8STim J. RobbinsMake the substitution only for the
43006e482e6SRuslan Ermilov.Ar N Ns 'th
4311fa600e8STim J. Robbinsoccurrence of the regular expression in the pattern space.
4329b50d902SRodney W. Grimes.It g
4339b50d902SRodney W. GrimesMake the substitution for all non-overlapping matches of the
4349b50d902SRodney W. Grimesregular expression, not just the first one.
4359b50d902SRodney W. Grimes.It p
4369b50d902SRodney W. GrimesWrite the pattern space to standard output if a replacement was made.
4379b50d902SRodney W. GrimesIf the replacement string is identical to that which it replaces, it
4389b50d902SRodney W. Grimesis still considered to have been a replacement.
4399b50d902SRodney W. Grimes.It w Em file
4409b50d902SRodney W. GrimesAppend the pattern space to
4419b50d902SRodney W. Grimes.Em file
4429b50d902SRodney W. Grimesif a replacement was made.
4439b50d902SRodney W. GrimesIf the replacement string is identical to that which it replaces, it
4449b50d902SRodney W. Grimesis still considered to have been a replacement.
4459b50d902SRodney W. Grimes.El
446726b61abSRuslan Ermilov.Pp
4479b50d902SRodney W. Grimes.It [2addr]t [label]
4489b50d902SRodney W. GrimesBranch to the
4499edc38efSSteve Price.Dq \&:
4509b50d902SRodney W. Grimesfunction bearing the label if any substitutions have been made since the
4519b50d902SRodney W. Grimesmost recent reading of an input line or execution of a
4529b50d902SRodney W. Grimes.Dq t
4539b50d902SRodney W. Grimesfunction.
4549b50d902SRodney W. GrimesIf no label is specified, branch to the end of the script.
455726b61abSRuslan Ermilov.Pp
4569b50d902SRodney W. Grimes.It [2addr]w Em file
4579b50d902SRodney W. GrimesAppend the pattern space to the
4589b50d902SRodney W. Grimes.Em file .
459726b61abSRuslan Ermilov.Pp
4609b50d902SRodney W. Grimes.It [2addr]x
4619b50d902SRodney W. GrimesSwap the contents of the pattern and hold spaces.
462726b61abSRuslan Ermilov.Pp
4639b50d902SRodney W. Grimes.It [2addr]y/string1/string2/
4649b50d902SRodney W. GrimesReplace all occurrences of characters in
4659b50d902SRodney W. Grimes.Em string1
4669b50d902SRodney W. Grimesin the pattern space with the corresponding characters from
4679b50d902SRodney W. Grimes.Em string2 .
4689b50d902SRodney W. GrimesAny character other than a backslash or newline can be used instead of
4699b50d902SRodney W. Grimesa slash to delimit the strings.
4709b50d902SRodney W. GrimesWithin
4719b50d902SRodney W. Grimes.Em string1
4729b50d902SRodney W. Grimesand
4739b50d902SRodney W. Grimes.Em string2 ,
4749b50d902SRodney W. Grimesa backslash followed by any character other than a newline is that literal
4759b50d902SRodney W. Grimescharacter, and a backslash followed by an ``n'' is replaced by a newline
4769b50d902SRodney W. Grimescharacter.
477726b61abSRuslan Ermilov.Pp
4789b50d902SRodney W. Grimes.It [2addr]!function
4799b50d902SRodney W. Grimes.It [2addr]!function-list
4809b50d902SRodney W. GrimesApply the function or function-list only to the lines that are
4819b50d902SRodney W. Grimes.Em not
4829b50d902SRodney W. Grimesselected by the address(es).
483726b61abSRuslan Ermilov.Pp
4849b50d902SRodney W. Grimes.It [0addr]:label
4859b50d902SRodney W. GrimesThis function does nothing; it bears a label to which the
4869b50d902SRodney W. Grimes.Dq b
4879b50d902SRodney W. Grimesand
4889b50d902SRodney W. Grimes.Dq t
4899b50d902SRodney W. Grimescommands may branch.
490726b61abSRuslan Ermilov.Pp
4919b50d902SRodney W. Grimes.It [1addr]=
4929b50d902SRodney W. GrimesWrite the line number to the standard output followed by a newline
4939b50d902SRodney W. Grimescharacter.
494726b61abSRuslan Ermilov.Pp
4959b50d902SRodney W. Grimes.It [0addr]
4969b50d902SRodney W. GrimesEmpty lines are ignored.
497726b61abSRuslan Ermilov.Pp
4989b50d902SRodney W. Grimes.It [0addr]#
4999b50d902SRodney W. GrimesThe
5009b50d902SRodney W. Grimes.Dq #
5019b50d902SRodney W. Grimesand the remainder of the line are ignored (treated as a comment), with
5029b50d902SRodney W. Grimesthe single exception that if the first two characters in the file are
5039b50d902SRodney W. Grimes.Dq #n ,
5049b50d902SRodney W. Grimesthe default output is suppressed.
5059b50d902SRodney W. GrimesThis is the same as specifying the
5069b50d902SRodney W. Grimes.Fl n
5079b50d902SRodney W. Grimesoption on the command line.
5089b50d902SRodney W. Grimes.El
50930e9580eSTim J. Robbins.Sh ENVIRONMENT
51030e9580eSTim J. RobbinsThe
51106e482e6SRuslan Ermilov.Ev COLUMNS , LANG , LC_ALL , LC_CTYPE
512e7cc3a21STim J. Robbinsand
513e7cc3a21STim J. Robbins.Ev LC_COLLATE
514e7cc3a21STim J. Robbinsenvironment variables affect the execution of
51530e9580eSTim J. Robbins.Nm
516e7cc3a21STim J. Robbinsas described in
517e7cc3a21STim J. Robbins.Xr environ 7 .
518a866e170SRuslan Ermilov.Sh EXIT STATUS
519d628d776SRuslan Ermilov.Ex -std
5209b50d902SRodney W. Grimes.Sh SEE ALSO
5219b50d902SRodney W. Grimes.Xr awk 1 ,
5229b50d902SRodney W. Grimes.Xr ed 1 ,
5239b50d902SRodney W. Grimes.Xr grep 1 ,
5249b50d902SRodney W. Grimes.Xr regex 3 ,
5259b50d902SRodney W. Grimes.Xr re_format 7
5269b50d902SRodney W. Grimes.Sh STANDARDS
5279b50d902SRodney W. GrimesThe
52873a08bb2SPhilippe Charnier.Nm
52942676968STim J. Robbinsutility is expected to be a superset of the
5309b50d902SRodney W. Grimes.St -p1003.2
5319b50d902SRodney W. Grimesspecification.
532839af0c1SJuli Mallett.Pp
533839af0c1SJuli MallettThe
5344438d91eSRuslan Ermilov.Fl E , a
535220d8b58STim J. Robbinsand
536839af0c1SJuli Mallett.Fl i
537220d8b58STim J. Robbinsoptions are non-standard
538839af0c1SJuli Mallett.Fx
539220d8b58STim J. Robbinsextensions and may not be available on other operating systems.
54042676968STim J. Robbins.Sh HISTORY
54142676968STim J. RobbinsA
54242676968STim J. Robbins.Nm
5436a3e8b0aSRuslan Ermilovcommand, written by
5446a3e8b0aSRuslan Ermilov.An L. E. McMahon ,
5456a3e8b0aSRuslan Ermilovappeared in
54642676968STim J. Robbins.At v7 .
547b6059c5cSDiomidis Spinellis.Sh AUTHORS
548b6059c5cSDiomidis Spinellis.An "Diomidis D. Spinellis" Aq dds@FreeBSD.org
5494f45d811STim J. Robbins.Sh BUGS
5508b086367STim J. RobbinsMultibyte characters containing a byte with value 0x5C
5514438d91eSRuslan Ermilov.Tn ( ASCII
5524438d91eSRuslan Ermilov.Ql \e )
5538b086367STim J. Robbinsmay be incorrectly treated as line continuation characters in arguments to the
5548b086367STim J. Robbins.Dq a ,
5558b086367STim J. Robbins.Dq c
5568b086367STim J. Robbinsand
5578b086367STim J. Robbins.Dq i
5588b086367STim J. Robbinscommands.
559e4d0177fSTim J. RobbinsMultibyte characters cannot be used as delimiters with the
560e4d0177fSTim J. Robbins.Dq s
561e4d0177fSTim J. Robbinsand
562e4d0177fSTim J. Robbins.Dq y
563e4d0177fSTim J. Robbinscommands.
564