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