sed.1 - 9base - revived minimalist port of Plan 9 userland to Unix | |
git clone git://git.suckless.org/9base | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
sed.1 (6954B) | |
--- | |
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 .IR 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 sp… | |
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 .IR 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\… | |
362 } | |
363 //N \fRif current line is empty, append next line… | |
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 .IR sam (1), | |
378 .IR 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. |