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. 15fbbd9655SWarner Losh.\" 3. 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.\" 31*a2d78713SValeriy Ushakov.Dd December 17, 2024 329b50d902SRodney W. Grimes.Dt SED 1 339b50d902SRodney W. Grimes.Os 349b50d902SRodney W. Grimes.Sh NAME 359b50d902SRodney W. Grimes.Nm sed 369b50d902SRodney W. Grimes.Nd stream editor 379b50d902SRodney W. Grimes.Sh SYNOPSIS 388fe908efSRuslan Ermilov.Nm 39fc39ce9eSPedro F. Giffuni.Op Fl Ealnru 409b50d902SRodney W. Grimes.Ar command 418655a965SBenedict Reuschling.Op Fl I Ar extension 428655a965SBenedict Reuschling.Op Fl i Ar extension 4347dec781SRuslan Ermilov.Op Ar 448fe908efSRuslan Ermilov.Nm 458655a965SBenedict Reuschling.Op Fl Ealnru 469b50d902SRodney W. Grimes.Op Fl e Ar command 479b50d902SRodney W. Grimes.Op Fl f Ar command_file 48f6703c9cSYaroslav Tykhiy.Op Fl I Ar extension 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. 98f9ab72bbSMateusz PiotrowskiThe commands are read from the standard input if 99f9ab72bbSMateusz Piotrowski.Ar command_file 100f9ab72bbSMateusz Piotrowskiis 101f9ab72bbSMateusz Piotrowski.Dq Li - . 102f6703c9cSYaroslav Tykhiy.It Fl I Ar extension 103839af0c1SJuli MallettEdit files in-place, saving backups with the specified 104839af0c1SJuli Mallett.Ar extension . 1055d16412dSJuli MallettIf a zero-length 1065d16412dSJuli Mallett.Ar extension 1075d16412dSJuli Mallettis given, no backup will be saved. 1085d16412dSJuli MallettIt is not recommended to give a zero-length 1095d16412dSJuli Mallett.Ar extension 1105d16412dSJuli Mallettwhen in-place editing files, as you risk corruption or partial content 1115d16412dSJuli Mallettin situations where disk space is exhausted, etc. 112f6703c9cSYaroslav Tykhiy.Pp 113f6703c9cSYaroslav TykhiyNote that in-place editing with 114f6703c9cSYaroslav Tykhiy.Fl I 115f6703c9cSYaroslav Tykhiystill takes place in a single continuous line address space covering 116f6703c9cSYaroslav Tykhiyall files, although each file preserves its individuality instead of 117f6703c9cSYaroslav Tykhiyforming one output stream. 118f6703c9cSYaroslav TykhiyThe line counter is never reset between files, address ranges can span 119f6703c9cSYaroslav Tykhiyfile boundaries, and the 120f6703c9cSYaroslav Tykhiy.Dq $ 121f6703c9cSYaroslav Tykhiyaddress matches only the last line of the last file. 122f6703c9cSYaroslav Tykhiy(See 123f6703c9cSYaroslav Tykhiy.Sx "Sed Addresses" . ) 124f6703c9cSYaroslav TykhiyThat can lead to unexpected results in many cases of in-place editing, 125f6703c9cSYaroslav Tykhiywhere using 126f6703c9cSYaroslav Tykhiy.Fl i 127f6703c9cSYaroslav Tykhiyis desired. 128f6703c9cSYaroslav Tykhiy.It Fl i Ar extension 129f6703c9cSYaroslav TykhiyEdit files in-place similarly to 130f6703c9cSYaroslav Tykhiy.Fl I , 131f6703c9cSYaroslav Tykhiybut treat each file independently from other files. 132f6703c9cSYaroslav TykhiyIn particular, line numbers in each file start at 1, 133f6703c9cSYaroslav Tykhiythe 134f6703c9cSYaroslav Tykhiy.Dq $ 135f6703c9cSYaroslav Tykhiyaddress matches the last line of the current file, 136f6703c9cSYaroslav Tykhiyand address ranges are limited to the current file. 137f6703c9cSYaroslav Tykhiy(See 138f6703c9cSYaroslav Tykhiy.Sx "Sed Addresses" . ) 139f6703c9cSYaroslav TykhiyThe net result is as though each file were edited by a separate 140f6703c9cSYaroslav Tykhiy.Nm 141f6703c9cSYaroslav Tykhiyinstance. 1421ed86f6cSGleb Smirnoff.It Fl l 1431ed86f6cSGleb SmirnoffMake output line buffered. 1449b50d902SRodney W. Grimes.It Fl n 1459b50d902SRodney W. GrimesBy default, each line of input is echoed to the standard output after 1469b50d902SRodney W. Grimesall of the commands have been applied to it. 1479b50d902SRodney W. GrimesThe 1489b50d902SRodney W. Grimes.Fl n 1499b50d902SRodney W. Grimesoption suppresses this behavior. 150701d73b6SWarner Losh.It Fl r 151701d73b6SWarner LoshSame as 152701d73b6SWarner Losh.Fl E 153701d73b6SWarner Loshfor compatibility with GNU sed. 154fc39ce9eSPedro F. Giffuni.It Fl u 155fc39ce9eSPedro F. GiffuniMake output unbuffered. 1569b50d902SRodney W. Grimes.El 1579b50d902SRodney W. Grimes.Pp 1589b50d902SRodney W. GrimesThe form of a 15973a08bb2SPhilippe Charnier.Nm 1609b50d902SRodney W. Grimescommand is as follows: 161726b61abSRuslan Ermilov.Pp 1629b50d902SRodney W. Grimes.Dl [address[,address]]function[arguments] 163726b61abSRuslan Ermilov.Pp 1649b50d902SRodney W. GrimesWhitespace may be inserted before the first address and the function 1659b50d902SRodney W. Grimesportions of the command. 1669b50d902SRodney W. Grimes.Pp 1679b50d902SRodney W. GrimesNormally, 16873a08bb2SPhilippe Charnier.Nm 1699b50d902SRodney W. Grimescyclically copies a line of input, not including its terminating newline 1709b50d902SRodney W. Grimescharacter, into a 1719b50d902SRodney W. Grimes.Em "pattern space" , 1729b50d902SRodney W. Grimes(unless there is something left after a 1739b50d902SRodney W. Grimes.Dq D 1749b50d902SRodney W. Grimesfunction), 1759b50d902SRodney W. Grimesapplies all of the commands with addresses that select that pattern space, 1769b50d902SRodney W. Grimescopies the pattern space to the standard output, appending a newline, and 1779b50d902SRodney W. Grimesdeletes the pattern space. 1789b50d902SRodney W. Grimes.Pp 1799b50d902SRodney W. GrimesSome of the functions use a 1809b50d902SRodney W. Grimes.Em "hold space" 1819b50d902SRodney W. Grimesto save all or part of the pattern space for subsequent retrieval. 1829b50d902SRodney W. Grimes.Sh "Sed Addresses" 183f6703c9cSYaroslav TykhiyAn address is not required, but if specified must have one of the 184f6703c9cSYaroslav Tykhiyfollowing formats: 185f6703c9cSYaroslav Tykhiy.Bl -bullet -offset indent 186f6703c9cSYaroslav Tykhiy.It 187f6703c9cSYaroslav Tykhiya number that counts 1889b50d902SRodney W. Grimesinput lines 189f6703c9cSYaroslav Tykhiycumulatively across input files (or in each file independently 190f6703c9cSYaroslav Tykhiyif a 191f6703c9cSYaroslav Tykhiy.Fl i 192f6703c9cSYaroslav Tykhiyoption is in effect); 193f6703c9cSYaroslav Tykhiy.It 194f6703c9cSYaroslav Tykhiya dollar 195c4d9468eSRuslan Ermilov.Pq Dq $ 196f6703c9cSYaroslav Tykhiycharacter that addresses the last line of input (or the last line 197f6703c9cSYaroslav Tykhiyof the current file if a 198f6703c9cSYaroslav Tykhiy.Fl i 199f6703c9cSYaroslav Tykhiyoption was specified); 200f6703c9cSYaroslav Tykhiy.It 201f6703c9cSYaroslav Tykhiya context address 202f6703c9cSYaroslav Tykhiythat consists of a regular expression preceded and followed by a 2038655a965SBenedict Reuschlingdelimiter. 2048655a965SBenedict ReuschlingThe closing delimiter can also optionally be followed by the 2056351d609SPedro F. Giffuni.Dq I 206bdd72b70SSuleiman Souhlalcharacter, to indicate that the regular expression is to be matched 207bdd72b70SSuleiman Souhlalin a case-insensitive way. 208f6703c9cSYaroslav Tykhiy.El 2099b50d902SRodney W. Grimes.Pp 2109b50d902SRodney W. GrimesA command line with no addresses selects every pattern space. 2119b50d902SRodney W. Grimes.Pp 2129b50d902SRodney W. GrimesA command line with one address selects all of the pattern spaces 2139b50d902SRodney W. Grimesthat match the address. 2149b50d902SRodney W. Grimes.Pp 2156a3e8b0aSRuslan ErmilovA command line with two addresses selects an inclusive range. 2166a3e8b0aSRuslan ErmilovThis 2171d2ed2f7SBill Swinglerange starts with the first pattern space that matches the first 2186a3e8b0aSRuslan Ermilovaddress. 2196a3e8b0aSRuslan ErmilovThe end of the range is the next following pattern space 2206a3e8b0aSRuslan Ermilovthat matches the second address. 2216a3e8b0aSRuslan ErmilovIf the second address is a number 2221d2ed2f7SBill Swingleless than or equal to the line number first selected, only that 2236a3e8b0aSRuslan Ermilovline is selected. 224f879e8d9SBrian SomersThe number in the second address may be prefixed with a 225f879e8d9SBrian Somers.Pq Dq \&+ 226f879e8d9SBrian Somersto specify the number of lines to match after the first pattern. 2276a3e8b0aSRuslan ErmilovIn the case when the second address is a context 228b6059c5cSDiomidis Spinellisaddress, 229b6059c5cSDiomidis Spinellis.Nm 230b6059c5cSDiomidis Spinellisdoes not re-match the second address against the 2316a3e8b0aSRuslan Ermilovpattern space that matched the first address. 2326a3e8b0aSRuslan ErmilovStarting at the 2332642bed2SGiorgos Keramidasfirst line following the selected range, 23473a08bb2SPhilippe Charnier.Nm 2359b50d902SRodney W. Grimesstarts looking again for the first address. 2369b50d902SRodney W. Grimes.Pp 2379b50d902SRodney W. GrimesEditing commands can be applied to non-selected pattern spaces by use 2389b50d902SRodney W. Grimesof the exclamation character 239c4d9468eSRuslan Ermilov.Pq Dq \&! 2409b50d902SRodney W. Grimesfunction. 2419b50d902SRodney W. Grimes.Sh "Sed Regular Expressions" 2420ef1d1f5SBrian FeldmanThe regular expressions used in 2438fe908efSRuslan Ermilov.Nm , 2440ef1d1f5SBrian Feldmanby default, are basic regular expressions (BREs, see 2450ef1d1f5SBrian Feldman.Xr re_format 7 246ca802a8aSPhilippe Charnierfor more information), but extended (modern) regular expressions can be used 247ca802a8aSPhilippe Charnierinstead if the 248175de1e6SBrian Feldman.Fl E 2490ef1d1f5SBrian Feldmanflag is given. 2500ef1d1f5SBrian FeldmanIn addition, 251175de1e6SBrian Feldman.Nm 252175de1e6SBrian Feldmanhas the following two additions to regular expressions: 253726b61abSRuslan Ermilov.Pp 2549b50d902SRodney W. Grimes.Bl -enum -compact 2559b50d902SRodney W. Grimes.It 2569b50d902SRodney W. GrimesIn a context address, any character other than a backslash 257c4d9468eSRuslan Ermilov.Pq Dq \e 2589b50d902SRodney W. Grimesor newline character may be used to delimit the regular expression. 259625451f9SYaroslav TykhiyThe opening delimiter needs to be preceded by a backslash 260625451f9SYaroslav Tykhiyunless it is a slash. 261625451f9SYaroslav TykhiyFor example, the context address 262625451f9SYaroslav Tykhiy.Li \exabcx 263625451f9SYaroslav Tykhiyis equivalent to 264625451f9SYaroslav Tykhiy.Li /abc/ . 2659b50d902SRodney W. GrimesAlso, putting a backslash character before the delimiting character 266db6fc083SYaroslav Tykhiywithin the regular expression causes the character to be treated literally. 267625451f9SYaroslav TykhiyFor example, in the context address 268625451f9SYaroslav Tykhiy.Li \exabc\exdefx , 269625451f9SYaroslav Tykhiythe RE delimiter is an 2709b50d902SRodney W. Grimes.Dq x 2719b50d902SRodney W. Grimesand the second 2729b50d902SRodney W. Grimes.Dq x 2739b50d902SRodney W. Grimesstands for itself, so that the regular expression is 2749b50d902SRodney W. Grimes.Dq abcxdef . 275726b61abSRuslan Ermilov.Pp 2769b50d902SRodney W. Grimes.It 2779b50d902SRodney W. GrimesThe escape sequence \en matches a newline character embedded in the 2789b50d902SRodney W. Grimespattern space. 2790227791bSRuslan ErmilovYou cannot, however, use a literal newline character in an address or 2809b50d902SRodney W. Grimesin the substitute command. 2819b50d902SRodney W. Grimes.El 2829b50d902SRodney W. Grimes.Pp 2839b50d902SRodney W. GrimesOne special feature of 28473a08bb2SPhilippe Charnier.Nm 2859b50d902SRodney W. Grimesregular expressions is that they can default to the last regular 2869b50d902SRodney W. Grimesexpression used. 2876a3e8b0aSRuslan ErmilovIf a regular expression is empty, i.e., just the delimiter characters 2889b50d902SRodney W. Grimesare specified, the last regular expression encountered is used instead. 2899b50d902SRodney W. GrimesThe last regular expression is defined as the last regular expression 2909b50d902SRodney W. Grimesused as part of an address or substitute command, and at run-time, not 2919b50d902SRodney W. Grimescompile-time. 2929b50d902SRodney W. GrimesFor example, the command 2939b50d902SRodney W. Grimes.Dq /abc/s//XXX/ 2949b50d902SRodney W. Grimeswill substitute 2959b50d902SRodney W. Grimes.Dq XXX 2969b50d902SRodney W. Grimesfor the pattern 2979b50d902SRodney W. Grimes.Dq abc . 2989b50d902SRodney W. Grimes.Sh "Sed Functions" 2999b50d902SRodney W. GrimesIn the following list of commands, the maximum number of permissible 3009b50d902SRodney W. Grimesaddresses for each command is indicated by [0addr], [1addr], or [2addr], 3019b50d902SRodney W. Grimesrepresenting zero, one, or two addresses. 3029b50d902SRodney W. Grimes.Pp 3039b50d902SRodney W. GrimesThe argument 3049b50d902SRodney W. Grimes.Em text 3059b50d902SRodney W. Grimesconsists of one or more lines. 3069b50d902SRodney W. GrimesTo embed a newline in the text, precede it with a backslash. 3079b50d902SRodney W. GrimesOther backslashes in text are deleted and the following character 3089b50d902SRodney W. Grimestaken literally. 3099b50d902SRodney W. Grimes.Pp 3109b50d902SRodney W. GrimesThe 3119b50d902SRodney W. Grimes.Dq r 3129b50d902SRodney W. Grimesand 3139b50d902SRodney W. Grimes.Dq w 3149b50d902SRodney W. Grimesfunctions take an optional file parameter, which should be separated 3159b50d902SRodney W. Grimesfrom the function letter by white space. 3169b50d902SRodney W. GrimesEach file given as an argument to 31773a08bb2SPhilippe Charnier.Nm 3189b50d902SRodney W. Grimesis created (or its contents truncated) before any input processing begins. 3199b50d902SRodney W. Grimes.Pp 3209b50d902SRodney W. GrimesThe 3219b50d902SRodney W. Grimes.Dq b , 3229b50d902SRodney W. Grimes.Dq r , 3239b50d902SRodney W. Grimes.Dq s , 3249b50d902SRodney W. Grimes.Dq t , 3259b50d902SRodney W. Grimes.Dq w , 3269b50d902SRodney W. Grimes.Dq y , 3279b88faecSRuslan Ermilov.Dq \&! , 3289b50d902SRodney W. Grimesand 3299b50d902SRodney W. Grimes.Dq \&: 3309b50d902SRodney W. Grimesfunctions all accept additional arguments. 3319b50d902SRodney W. GrimesThe following synopses indicate which arguments have to be separated from 3329b50d902SRodney W. Grimesthe function letters by white space characters. 3339b50d902SRodney W. Grimes.Pp 3349b50d902SRodney W. GrimesTwo of the functions take a function-list. 3359b50d902SRodney W. GrimesThis is a list of 33673a08bb2SPhilippe Charnier.Nm 3379b50d902SRodney W. Grimesfunctions separated by newlines, as follows: 3389b50d902SRodney W. Grimes.Bd -literal -offset indent 3399b50d902SRodney W. Grimes{ function 3409b50d902SRodney W. Grimes function 3419b50d902SRodney W. Grimes ... 3429b50d902SRodney W. Grimes function 3439b50d902SRodney W. Grimes} 3449b50d902SRodney W. Grimes.Ed 3459b50d902SRodney W. Grimes.Pp 3469b50d902SRodney W. GrimesThe 3479b50d902SRodney W. Grimes.Dq { 3489b50d902SRodney W. Grimescan be preceded by white space and can be followed by white space. 3499b50d902SRodney W. GrimesThe function can be preceded by white space. 3509b50d902SRodney W. GrimesThe terminating 3519b50d902SRodney W. Grimes.Dq } 3527d3c2941SAndrey A. Chernovmust be preceded by a newline, and may also be preceded by white space. 353726b61abSRuslan Ermilov.Pp 3549b50d902SRodney W. Grimes.Bl -tag -width "XXXXXX" -compact 3559b50d902SRodney W. Grimes.It [2addr] function-list 3569b50d902SRodney W. GrimesExecute function-list only when the pattern space is selected. 357726b61abSRuslan Ermilov.Pp 3589b50d902SRodney W. Grimes.It [1addr]a\e 3599b50d902SRodney W. Grimes.It text 3609b50d902SRodney W. GrimesWrite 3619b50d902SRodney W. Grimes.Em text 3629b50d902SRodney W. Grimesto standard output immediately before each attempt to read a line of input, 3639b50d902SRodney W. Grimeswhether by executing the 3649b50d902SRodney W. Grimes.Dq N 3659b50d902SRodney W. Grimesfunction or by beginning a new cycle. 366726b61abSRuslan Ermilov.Pp 36753daef24SAndreas Schulz.It [2addr]b[label] 3689b50d902SRodney W. GrimesBranch to the 3699b50d902SRodney W. Grimes.Dq \&: 3709b50d902SRodney W. Grimesfunction with the specified label. 3719b50d902SRodney W. GrimesIf the label is not specified, branch to the end of the script. 372726b61abSRuslan Ermilov.Pp 3739b50d902SRodney W. Grimes.It [2addr]c\e 3749b50d902SRodney W. Grimes.It text 375*a2d78713SValeriy UshakovDelete the pattern space and start the next cycle. 3769b50d902SRodney W. GrimesWith 0 or 1 address or at the end of a 2-address range, 3779b50d902SRodney W. Grimes.Em text 3789b50d902SRodney W. Grimesis written to the standard output. 379726b61abSRuslan Ermilov.Pp 3809b50d902SRodney W. Grimes.It [2addr]d 3819b50d902SRodney W. GrimesDelete the pattern space and start the next cycle. 382726b61abSRuslan Ermilov.Pp 3839b50d902SRodney W. Grimes.It [2addr]D 3849b50d902SRodney W. GrimesDelete the initial segment of the pattern space through the first 3859b50d902SRodney W. Grimesnewline character and start the next cycle. 386726b61abSRuslan Ermilov.Pp 3879b50d902SRodney W. Grimes.It [2addr]g 3889b50d902SRodney W. GrimesReplace the contents of the pattern space with the contents of the 3899b50d902SRodney W. Grimeshold space. 390726b61abSRuslan Ermilov.Pp 3919b50d902SRodney W. Grimes.It [2addr]G 3929b50d902SRodney W. GrimesAppend a newline character followed by the contents of the hold space 3939b50d902SRodney W. Grimesto the pattern space. 394726b61abSRuslan Ermilov.Pp 3959b50d902SRodney W. Grimes.It [2addr]h 3969b50d902SRodney W. GrimesReplace the contents of the hold space with the contents of the 3979b50d902SRodney W. Grimespattern space. 398726b61abSRuslan Ermilov.Pp 3999b50d902SRodney W. Grimes.It [2addr]H 4009b50d902SRodney W. GrimesAppend a newline character followed by the contents of the pattern space 4019b50d902SRodney W. Grimesto the hold space. 402726b61abSRuslan Ermilov.Pp 4039b50d902SRodney W. Grimes.It [1addr]i\e 4049b50d902SRodney W. Grimes.It text 4059b50d902SRodney W. GrimesWrite 4069b50d902SRodney W. Grimes.Em text 4079b50d902SRodney W. Grimesto the standard output. 408726b61abSRuslan Ermilov.Pp 4099b50d902SRodney W. Grimes.It [2addr]l 4109b50d902SRodney W. Grimes(The letter ell.) 4119b50d902SRodney W. GrimesWrite the pattern space to the standard output in a visually unambiguous 4129b50d902SRodney W. Grimesform. 4139b50d902SRodney W. GrimesThis form is as follows: 414726b61abSRuslan Ermilov.Pp 4159b50d902SRodney W. Grimes.Bl -tag -width "carriage-returnXX" -offset indent -compact 4169b50d902SRodney W. Grimes.It backslash 41707847cc8SMike Pritchard\e\e 4189b50d902SRodney W. Grimes.It alert 4199b50d902SRodney W. Grimes\ea 4209b50d902SRodney W. Grimes.It form-feed 4219b50d902SRodney W. Grimes\ef 4229b50d902SRodney W. Grimes.It carriage-return 4239b50d902SRodney W. Grimes\er 4249b50d902SRodney W. Grimes.It tab 4259b50d902SRodney W. Grimes\et 4269b50d902SRodney W. Grimes.It vertical tab 4279b50d902SRodney W. Grimes\ev 4289b50d902SRodney W. Grimes.El 4299b50d902SRodney W. Grimes.Pp 4309b50d902SRodney W. GrimesNonprintable characters are written as three-digit octal numbers (with a 4319b50d902SRodney W. Grimespreceding backslash) for each byte in the character (most significant byte 4329b50d902SRodney W. Grimesfirst). 4339b50d902SRodney W. GrimesLong lines are folded, with the point of folding indicated by displaying 4349b50d902SRodney W. Grimesa backslash followed by a newline. 4359b50d902SRodney W. GrimesThe end of each line is marked with a 4369b50d902SRodney W. Grimes.Dq $ . 437726b61abSRuslan Ermilov.Pp 4389b50d902SRodney W. Grimes.It [2addr]n 4399b50d902SRodney W. GrimesWrite the pattern space to the standard output if the default output has 4409b50d902SRodney W. Grimesnot been suppressed, and replace the pattern space with the next line of 4419b50d902SRodney W. Grimesinput. 442726b61abSRuslan Ermilov.Pp 4439b50d902SRodney W. Grimes.It [2addr]N 4449b50d902SRodney W. GrimesAppend the next line of input to the pattern space, using an embedded 4459b50d902SRodney W. Grimesnewline character to separate the appended material from the original 4469b50d902SRodney W. Grimescontents. 4479b50d902SRodney W. GrimesNote that the current line number changes. 448726b61abSRuslan Ermilov.Pp 4499b50d902SRodney W. Grimes.It [2addr]p 4509b50d902SRodney W. GrimesWrite the pattern space to standard output. 451726b61abSRuslan Ermilov.Pp 4529b50d902SRodney W. Grimes.It [2addr]P 4539b50d902SRodney W. GrimesWrite the pattern space, up to the first newline character to the 4549b50d902SRodney W. Grimesstandard output. 455726b61abSRuslan Ermilov.Pp 4569b50d902SRodney W. Grimes.It [1addr]q 4579b50d902SRodney W. GrimesBranch to the end of the script and quit without starting a new cycle. 458726b61abSRuslan Ermilov.Pp 4599b50d902SRodney W. Grimes.It [1addr]r file 4609b50d902SRodney W. GrimesCopy the contents of 4619b50d902SRodney W. Grimes.Em file 4629b50d902SRodney W. Grimesto the standard output immediately before the next attempt to read a 4639b50d902SRodney W. Grimesline of input. 4649b50d902SRodney W. GrimesIf 4659b50d902SRodney W. Grimes.Em file 4669b50d902SRodney W. Grimescannot be read for any reason, it is silently ignored and no error 4679b50d902SRodney W. Grimescondition is set. 468726b61abSRuslan Ermilov.Pp 4699b50d902SRodney W. Grimes.It [2addr]s/regular expression/replacement/flags 4709b50d902SRodney W. GrimesSubstitute the replacement string for the first instance of the regular 4719b50d902SRodney W. Grimesexpression in the pattern space. 4729b50d902SRodney W. GrimesAny character other than backslash or newline can be used instead of 4739b50d902SRodney W. Grimesa slash to delimit the RE and the replacement. 4749b50d902SRodney W. GrimesWithin the RE and the replacement, the RE delimiter itself can be used as 4759b50d902SRodney W. Grimesa literal character if it is preceded by a backslash. 4769b50d902SRodney W. Grimes.Pp 4779b50d902SRodney W. GrimesAn ampersand 478c4d9468eSRuslan Ermilov.Pq Dq & 4799b50d902SRodney W. Grimesappearing in the replacement is replaced by the string matching the RE. 4809b50d902SRodney W. GrimesThe special meaning of 4819b50d902SRodney W. Grimes.Dq & 4829b50d902SRodney W. Grimesin this context can be suppressed by preceding it by a backslash. 4839b50d902SRodney W. GrimesThe string 4849b50d902SRodney W. Grimes.Dq \e# , 4859b50d902SRodney W. Grimeswhere 4869b50d902SRodney W. Grimes.Dq # 4879b50d902SRodney W. Grimesis a digit, is replaced by the text matched 4889b50d902SRodney W. Grimesby the corresponding backreference expression (see 4899b50d902SRodney W. Grimes.Xr re_format 7 ) . 4909b50d902SRodney W. Grimes.Pp 4919b50d902SRodney W. GrimesA line can be split by substituting a newline character into it. 4929b50d902SRodney W. GrimesTo specify a newline character in the replacement string, precede it with 4939b50d902SRodney W. Grimesa backslash. 4949b50d902SRodney W. Grimes.Pp 4959b50d902SRodney W. GrimesThe value of 4969b50d902SRodney W. Grimes.Em flags 4979b50d902SRodney W. Grimesin the substitute function is zero or more of the following: 4989b50d902SRodney W. Grimes.Bl -tag -width "XXXXXX" -offset indent 49906e482e6SRuslan Ermilov.It Ar N 5001fa600e8STim J. RobbinsMake the substitution only for the 50106e482e6SRuslan Ermilov.Ar N Ns 'th 5021fa600e8STim J. Robbinsoccurrence of the regular expression in the pattern space. 5039b50d902SRodney W. Grimes.It g 5049b50d902SRodney W. GrimesMake the substitution for all non-overlapping matches of the 5059b50d902SRodney W. Grimesregular expression, not just the first one. 5069b50d902SRodney W. Grimes.It p 5079b50d902SRodney W. GrimesWrite the pattern space to standard output if a replacement was made. 5089b50d902SRodney W. GrimesIf the replacement string is identical to that which it replaces, it 5099b50d902SRodney W. Grimesis still considered to have been a replacement. 5109b50d902SRodney W. Grimes.It w Em file 5119b50d902SRodney W. GrimesAppend the pattern space to 5129b50d902SRodney W. Grimes.Em file 5139b50d902SRodney W. Grimesif a replacement was made. 5149b50d902SRodney W. GrimesIf the replacement string is identical to that which it replaces, it 5159b50d902SRodney W. Grimesis still considered to have been a replacement. 51649e89014SEitan Adler.It i or I 517bdd72b70SSuleiman SouhlalMatch the regular expression in a case-insensitive way. 5189b50d902SRodney W. Grimes.El 519726b61abSRuslan Ermilov.Pp 5209b50d902SRodney W. Grimes.It [2addr]t [label] 5219b50d902SRodney W. GrimesBranch to the 5229edc38efSSteve Price.Dq \&: 5239b50d902SRodney W. Grimesfunction bearing the label if any substitutions have been made since the 5249b50d902SRodney W. Grimesmost recent reading of an input line or execution of a 5259b50d902SRodney W. Grimes.Dq t 5269b50d902SRodney W. Grimesfunction. 5279b50d902SRodney W. GrimesIf no label is specified, branch to the end of the script. 528726b61abSRuslan Ermilov.Pp 5299b50d902SRodney W. Grimes.It [2addr]w Em file 5309b50d902SRodney W. GrimesAppend the pattern space to the 5319b50d902SRodney W. Grimes.Em file . 532726b61abSRuslan Ermilov.Pp 5339b50d902SRodney W. Grimes.It [2addr]x 5349b50d902SRodney W. GrimesSwap the contents of the pattern and hold spaces. 535726b61abSRuslan Ermilov.Pp 5369b50d902SRodney W. Grimes.It [2addr]y/string1/string2/ 5379b50d902SRodney W. GrimesReplace all occurrences of characters in 5389b50d902SRodney W. Grimes.Em string1 5399b50d902SRodney W. Grimesin the pattern space with the corresponding characters from 5409b50d902SRodney W. Grimes.Em string2 . 5419b50d902SRodney W. GrimesAny character other than a backslash or newline can be used instead of 5429b50d902SRodney W. Grimesa slash to delimit the strings. 5439b50d902SRodney W. GrimesWithin 5449b50d902SRodney W. Grimes.Em string1 5459b50d902SRodney W. Grimesand 5469b50d902SRodney W. Grimes.Em string2 , 5479b50d902SRodney W. Grimesa backslash followed by any character other than a newline is that literal 5489b50d902SRodney W. Grimescharacter, and a backslash followed by an ``n'' is replaced by a newline 5499b50d902SRodney W. Grimescharacter. 550726b61abSRuslan Ermilov.Pp 5519b50d902SRodney W. Grimes.It [2addr]!function 5529b50d902SRodney W. Grimes.It [2addr]!function-list 5539b50d902SRodney W. GrimesApply the function or function-list only to the lines that are 5549b50d902SRodney W. Grimes.Em not 5559b50d902SRodney W. Grimesselected by the address(es). 556726b61abSRuslan Ermilov.Pp 5579b50d902SRodney W. Grimes.It [0addr]:label 5589b50d902SRodney W. GrimesThis function does nothing; it bears a label to which the 5599b50d902SRodney W. Grimes.Dq b 5609b50d902SRodney W. Grimesand 5619b50d902SRodney W. Grimes.Dq t 5629b50d902SRodney W. Grimescommands may branch. 563726b61abSRuslan Ermilov.Pp 5649b50d902SRodney W. Grimes.It [1addr]= 5659b50d902SRodney W. GrimesWrite the line number to the standard output followed by a newline 5669b50d902SRodney W. Grimescharacter. 567726b61abSRuslan Ermilov.Pp 5689b50d902SRodney W. Grimes.It [0addr] 5699b50d902SRodney W. GrimesEmpty lines are ignored. 570726b61abSRuslan Ermilov.Pp 5719b50d902SRodney W. Grimes.It [0addr]# 5729b50d902SRodney W. GrimesThe 5739b50d902SRodney W. Grimes.Dq # 5749b50d902SRodney W. Grimesand the remainder of the line are ignored (treated as a comment), with 5759b50d902SRodney W. Grimesthe single exception that if the first two characters in the file are 5769b50d902SRodney W. Grimes.Dq #n , 5779b50d902SRodney W. Grimesthe default output is suppressed. 5789b50d902SRodney W. GrimesThis is the same as specifying the 5799b50d902SRodney W. Grimes.Fl n 5809b50d902SRodney W. Grimesoption on the command line. 5819b50d902SRodney W. Grimes.El 58230e9580eSTim J. Robbins.Sh ENVIRONMENT 58330e9580eSTim J. RobbinsThe 58406e482e6SRuslan Ermilov.Ev COLUMNS , LANG , LC_ALL , LC_CTYPE 585e7cc3a21STim J. Robbinsand 586e7cc3a21STim J. Robbins.Ev LC_COLLATE 587e7cc3a21STim J. Robbinsenvironment variables affect the execution of 58830e9580eSTim J. Robbins.Nm 589e7cc3a21STim J. Robbinsas described in 590e7cc3a21STim J. Robbins.Xr environ 7 . 591a866e170SRuslan Ermilov.Sh EXIT STATUS 592d628d776SRuslan Ermilov.Ex -std 593d09b527fSBrad Davis.Sh EXAMPLES 594d09b527fSBrad DavisReplace 595d09b527fSBrad Davis.Ql bar 596d09b527fSBrad Daviswith 597d09b527fSBrad Davis.Ql baz 598d09b527fSBrad Daviswhen piped from another command: 599d09b527fSBrad Davis.Bd -literal -offset indent 600d09b527fSBrad Davisecho "An alternate word, like bar, is sometimes used in examples." | sed 's/bar/baz/' 601d09b527fSBrad Davis.Ed 602d09b527fSBrad Davis.Pp 603d09b527fSBrad DavisUsing backlashes can sometimes be hard to read and follow: 604d09b527fSBrad Davis.Bd -literal -offset indent 605d09b527fSBrad Davisecho "/home/example" | sed 's/\\/home\\/example/\\/usr\\/local\\/example/' 606d09b527fSBrad Davis.Ed 607d09b527fSBrad Davis.Pp 608d09b527fSBrad DavisUsing a different separator can be handy when working with paths: 609d09b527fSBrad Davis.Bd -literal -offset indent 610d09b527fSBrad Davisecho "/home/example" | sed 's#/home/example#/usr/local/example#' 611d09b527fSBrad Davis.Ed 612d09b527fSBrad Davis.Pp 613583bb9c5SGordon BerglingReplace all occurrences of 614d09b527fSBrad Davis.Ql foo 615d09b527fSBrad Daviswith 616d09b527fSBrad Davis.Ql bar 617d09b527fSBrad Davisin the file 618d09b527fSBrad Davis.Pa test.txt , 619d09b527fSBrad Daviswithout creating a backup of the file: 620d09b527fSBrad Davis.Bd -literal -offset indent 6210ae98ab7SBenedict Reuschlingsed -i '' -e 's/foo/bar/g' test.txt 622d09b527fSBrad Davis.Ed 6239b50d902SRodney W. Grimes.Sh SEE ALSO 6249b50d902SRodney W. Grimes.Xr awk 1 , 6259b50d902SRodney W. Grimes.Xr ed 1 , 6269b50d902SRodney W. Grimes.Xr grep 1 , 6279b50d902SRodney W. Grimes.Xr regex 3 , 6289b50d902SRodney W. Grimes.Xr re_format 7 6299048d9a9SGordon Bergling.Rs 6309048d9a9SGordon Bergling.\" 4.4BSD USD:15 6319048d9a9SGordon Bergling.%A Lee E. McMahon 6329048d9a9SGordon Bergling.%I AT&T Bell Laboratories 6339048d9a9SGordon Bergling.%T SED \(em A Non-interactive Text Editor 6349048d9a9SGordon Bergling.%R Computing Science Technical Report 6359048d9a9SGordon Bergling.%N 77 6369048d9a9SGordon Bergling.%D January 1979 6379048d9a9SGordon Bergling.Re 6389b50d902SRodney W. Grimes.Sh STANDARDS 6399b50d902SRodney W. GrimesThe 64073a08bb2SPhilippe Charnier.Nm 64142676968STim J. Robbinsutility is expected to be a superset of the 6429b50d902SRodney W. Grimes.St -p1003.2 6439b50d902SRodney W. Grimesspecification. 644839af0c1SJuli Mallett.Pp 645839af0c1SJuli MallettThe 646f6703c9cSYaroslav Tykhiy.Fl E , I , a 647220d8b58STim J. Robbinsand 648839af0c1SJuli Mallett.Fl i 649f9ab72bbSMateusz Piotrowskioptions, the special meaning of 650f9ab72bbSMateusz Piotrowski.Fl f Cm - , 651f9ab72bbSMateusz Piotrowskithe prefixing 652f879e8d9SBrian Somers.Dq \&+ 653f879e8d9SBrian Somersin the second member of an address range, 654f879e8d9SBrian Somersas well as the 655bdd72b70SSuleiman Souhlal.Dq I 656bdd72b70SSuleiman Souhlalflag to the address regular expression and substitution command are 657bdd72b70SSuleiman Souhlalnon-standard 658839af0c1SJuli Mallett.Fx 659220d8b58STim J. Robbinsextensions and may not be available on other operating systems. 66042676968STim J. Robbins.Sh HISTORY 66142676968STim J. RobbinsA 66242676968STim J. Robbins.Nm 6636a3e8b0aSRuslan Ermilovcommand, written by 6646a3e8b0aSRuslan Ermilov.An L. E. McMahon , 6656a3e8b0aSRuslan Ermilovappeared in 66642676968STim J. Robbins.At v7 . 667b6059c5cSDiomidis Spinellis.Sh AUTHORS 6682b7af31cSBaptiste Daroussin.An Diomidis D. Spinellis Aq Mt dds@FreeBSD.org 6694f45d811STim J. Robbins.Sh BUGS 6708b086367STim J. RobbinsMultibyte characters containing a byte with value 0x5C 6714438d91eSRuslan Ermilov.Tn ( ASCII 6724438d91eSRuslan Ermilov.Ql \e ) 6738b086367STim J. Robbinsmay be incorrectly treated as line continuation characters in arguments to the 6748b086367STim J. Robbins.Dq a , 6758b086367STim J. Robbins.Dq c 6768b086367STim J. Robbinsand 6778b086367STim J. Robbins.Dq i 6788b086367STim J. Robbinscommands. 679e4d0177fSTim J. RobbinsMultibyte characters cannot be used as delimiters with the 680e4d0177fSTim J. Robbins.Dq s 681e4d0177fSTim J. Robbinsand 682e4d0177fSTim J. Robbins.Dq y 683e4d0177fSTim J. Robbinscommands. 684