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