Commit | Line | Data |
---|---|---|
93efbe47 | 1 | .\" @(#)sed.1 6.1 (Berkeley) %G% |
2d33ba58 | 2 | .\" |
93efbe47 | 3 | .TH SED 1 "" |
2d33ba58 KM |
4 | .AT 3 |
5 | .SH NAME | |
6 | sed \- stream editor | |
7 | .SH SYNOPSIS | |
8 | .B sed | |
9 | [ | |
10 | .B \-n | |
11 | ] | |
12 | [ | |
13 | .B \-e | |
14 | script ] [ | |
15 | .B \-f | |
16 | sfile ] [ file ] ... | |
17 | .SH DESCRIPTION | |
18 | .I Sed | |
19 | copies the named | |
20 | .I files | |
21 | (standard input default) to the standard output, | |
22 | edited according to a script of commands. | |
23 | The | |
24 | .B \-f | |
25 | option causes the script to be taken from file | |
26 | .IR sfile ; | |
27 | these options accumulate. | |
28 | If there is just one | |
29 | .B \-e | |
30 | option and no | |
31 | .BR \-f 's, | |
32 | the flag | |
33 | .B \-e | |
34 | may be omitted. | |
35 | The | |
36 | .B \-n | |
37 | option suppresses the default output. | |
38 | .PP | |
39 | A script consists of editing commands, one per line, | |
40 | of the following form: | |
41 | .IP | |
42 | [address [, address] ] function [arguments] | |
43 | .PP | |
44 | In normal operation | |
45 | .I sed | |
46 | cyclically copies a line of input into a | |
47 | .I pattern space | |
48 | (unless there is something left after | |
49 | a `D' command), | |
50 | applies in sequence | |
51 | all commands whose | |
52 | .I addresses | |
53 | select that pattern space, | |
54 | and at the end of the script copies the pattern space | |
55 | to the standard output (except under | |
56 | .BR \-n ) | |
57 | and deletes the pattern space. | |
58 | .PP | |
59 | An | |
60 | .I address | |
61 | is either a decimal number that counts | |
62 | input lines cumulatively across files, a `$' that | |
63 | addresses the last line of input, or a context address, | |
64 | `/regular expression/', in the style of | |
65 | .IR ed (1) | |
66 | modified thus: | |
67 | .IP | |
68 | The escape sequence `\en' matches a | |
69 | newline embedded in the pattern space. | |
70 | .PP | |
71 | A command line with no addresses selects every pattern space. | |
72 | .PP | |
73 | A command line with | |
74 | one address selects each pattern space that matches the address. | |
75 | .PP | |
76 | A command line with | |
77 | two addresses selects the inclusive range from the first | |
78 | pattern space that matches the first address through | |
79 | the next pattern space that matches | |
80 | the second. | |
81 | (If the second address is a number less than or equal | |
82 | to the line number first selected, only one | |
83 | line is selected.) | |
84 | Thereafter the process is repeated, looking again for the | |
85 | first address. | |
86 | .PP | |
87 | Editing commands can be applied only to non-selected pattern | |
88 | spaces by use of the negation function `!' (below). | |
89 | .PP | |
90 | In the following list of functions the | |
91 | maximum number of permissible addresses | |
92 | for each function is indicated in parentheses. | |
93 | .PP | |
94 | An argument denoted | |
95 | .I text | |
96 | consists of one or more lines, | |
97 | all but the last of which end with `\e' to hide the | |
98 | newline. | |
99 | Backslashes in text are treated like backslashes | |
100 | in the replacement string of an `s' command, | |
101 | and may be used to protect initial blanks and tabs | |
102 | against the stripping that is done on | |
103 | every script line. | |
104 | .PP | |
105 | An argument denoted | |
106 | .I rfile | |
107 | or | |
108 | .I wfile | |
109 | must terminate the command | |
110 | line and must be preceded by exactly one blank. | |
111 | Each | |
112 | .I wfile | |
113 | is created before processing begins. | |
114 | There can be at most 10 distinct | |
115 | .I wfile | |
116 | arguments. | |
117 | .TP | |
118 | (1)\|a\e | |
119 | .br | |
120 | .ns | |
121 | .TP | |
122 | .I text | |
123 | .br | |
124 | Append. | |
125 | Place | |
126 | .I text | |
127 | on the output before | |
128 | reading the next input line. | |
129 | .TP | |
130 | .RI (2)\|b " label" | |
131 | Branch to the `:' command bearing the | |
132 | .IR label . | |
133 | If | |
134 | .I label | |
135 | is empty, branch to the end of the script. | |
136 | .TP | |
137 | (2)\|c\e | |
138 | .br | |
139 | .ns | |
140 | .TP | |
141 | .I text | |
142 | .br | |
143 | Change. | |
144 | Delete the pattern space. | |
145 | With 0 or 1 address or at the end of a 2-address range, place | |
146 | .I text | |
147 | on the output. | |
148 | Start the next cycle. | |
149 | .TP | |
150 | (2)\|d | |
151 | Delete the pattern space. | |
152 | Start the next cycle. | |
153 | .TP | |
154 | (2)\|D | |
155 | Delete the initial segment of the | |
156 | pattern space through the first newline. | |
157 | Start the next cycle. | |
158 | .TP | |
159 | (2)\|g | |
160 | Replace the contents of the pattern space | |
161 | by the contents of the hold space. | |
162 | .TP | |
163 | (2)\|G | |
164 | Append the contents of the hold space to the pattern space. | |
165 | .TP | |
166 | (2)\|h | |
167 | Replace the contents of the hold space by the contents of the pattern space. | |
168 | .TP | |
169 | (2)\|H | |
170 | Append the contents of the pattern space to the hold space. | |
171 | .TP | |
172 | (1)\|i\e | |
173 | .br | |
174 | .ns | |
175 | .TP | |
176 | .I text | |
177 | .br | |
178 | Insert. | |
179 | Place | |
180 | .I text | |
181 | on the standard output. | |
182 | .TP | |
183 | (2)\|n | |
184 | Copy the pattern space to the standard output. | |
185 | Replace the pattern space with the next line of input. | |
186 | .TP | |
187 | (2)\|N | |
188 | Append the next line of input to the pattern space | |
189 | with an embedded newline. | |
190 | (The current line number changes.) | |
191 | .TP | |
192 | (2)\|p | |
193 | Print. | |
194 | Copy the pattern space to the standard output. | |
195 | .TP | |
196 | (2)\|P | |
197 | Copy the initial segment of the pattern space through | |
198 | the first newline to the standard output. | |
199 | .TP | |
200 | (1)\|q | |
201 | Quit. | |
202 | Branch to the end of the script. | |
203 | Do not start a new cycle. | |
204 | .TP | |
205 | .RI (2)\|r " rfile" | |
206 | Read the contents of | |
207 | .IR rfile . | |
208 | Place them on the output before reading | |
209 | the next input line. | |
210 | .TP | |
211 | .RI (2)\|s /regular\ expression/replacement/flags | |
212 | Substitute the | |
213 | .I replacement | |
214 | string for instances of the | |
215 | .I regular expression | |
216 | in the pattern space. | |
217 | Any character may be used instead of `/'. | |
218 | For a fuller description see | |
219 | .IR ed (1). | |
220 | .I Flags | |
221 | is zero or more of | |
222 | .RS | |
223 | .TP | |
224 | g | |
225 | Global. | |
226 | Substitute for all nonoverlapping instances of the | |
227 | .I regular expression | |
228 | rather than just the | |
229 | first one. | |
230 | .TP | |
231 | p | |
232 | Print the pattern space if a replacement was made. | |
233 | .TP | |
234 | .RI w " wfile" | |
235 | Write. | |
236 | Append the pattern space to | |
237 | .I wfile | |
238 | if a replacement | |
239 | was made. | |
240 | .RE | |
241 | .TP | |
242 | .RI (2)\|t " label" | |
243 | Test. | |
244 | Branch to the `:' command bearing the | |
245 | .I label | |
246 | if any | |
247 | substitutions have been made since the most recent | |
248 | reading of an input line or execution of a `t'. | |
249 | If | |
250 | .I label | |
251 | is empty, branch to the end of the script. | |
252 | .TP | |
253 | .RI (2)\|w " wfile" | |
254 | Write. | |
255 | Append the pattern space to | |
256 | .IR wfile . | |
257 | .TP | |
258 | .RI (2)\|x | |
259 | Exchange the contents of the pattern and hold spaces. | |
260 | .TP | |
261 | .RI (2)\|y /string1/string2/ | |
262 | Transform. | |
263 | Replace all occurrences of characters in | |
264 | .I string1 | |
265 | with the corresponding character in | |
266 | .I string2. | |
267 | The lengths of | |
268 | .I | |
269 | string1 | |
270 | and | |
271 | .I string2 | |
272 | must be equal. | |
273 | .TP | |
274 | .RI (2)! " function" | |
275 | Don't. | |
276 | Apply the | |
277 | .I function | |
278 | (or group, if | |
279 | .I function | |
280 | is `{') only to lines | |
281 | .I not | |
282 | selected by the address(es). | |
283 | .TP | |
284 | .RI (0)\|: " label" | |
285 | This command does nothing; it bears a | |
286 | .I label | |
287 | for `b' and `t' commands to branch to. | |
288 | .TP | |
289 | (1)\|= | |
290 | Place the current line number on the standard output as a line. | |
291 | .TP | |
292 | (2)\|{ | |
293 | Execute the following commands through a matching `}' | |
294 | only when the pattern space is selected. | |
295 | .TP | |
296 | (0)\| | |
297 | An empty command is ignored. | |
298 | .SH SEE ALSO | |
299 | ed(1), grep(1), awk(1), lex(1) |