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