diff options
Diffstat (limited to 'static/v10/man1/sed.1')
| -rw-r--r-- | static/v10/man1/sed.1 | 441 |
1 files changed, 441 insertions, 0 deletions
diff --git a/static/v10/man1/sed.1 b/static/v10/man1/sed.1 new file mode 100644 index 00000000..7309cd95 --- /dev/null +++ b/static/v10/man1/sed.1 @@ -0,0 +1,441 @@ +.TH SED 1 +.CT 1 files editor +.SH NAME +sed \- stream editor +.SH SYNOPSIS +.B sed +[ +.B -n +] +.I script +[ +.I file ... +] +.PP +.B sed +[ +.B -e +.I script +] +[ +.B -f +.I sfile +] +[ +.I file ... +] +.SH DESCRIPTION +.I Sed +copies the named +.I files +(standard input default) to the standard output, +edited according to a command script. +Script options accumulate. +.TP +.BI -e " script +Script is given literally in command line. +.TP +.BI -f " sfile +Script is given in file +.I sfile. +.TP +.B -n +Suppress the default output. +.PP +A script consists of editing commands, usually one per line. +If a command ends with +.LR ; , +.LR { , +or +.LR } , +the next command begins immediately thereafter. +Empty commands are ignored. +Commands have the form +.IP +[\fIaddress\fR [\f5,\fI address\fR] ] \fIfunction\fR [\fIargument\fR ...] [\fB;\fR] +.PP +In normal operation +.I sed +cyclically copies a line of input into a +.I pattern space +(unless there is something left after +a +.L D +command), +applies in sequence +all commands whose +.I addresses +select that pattern space, +and at the end of the script copies the pattern space +to the standard output (except under +.BR -n ) +and deletes the pattern space. +.PP +An +.I address +is either a decimal number that counts +input lines cumulatively across files, a +.L $ +that +addresses the last line of input, or a context address, +.BI / regular-expression / , +in the style of +.IR ed (1), +with the added convention that +.L \en +matches a +newline embedded in the pattern space. +.PP +A command line with no addresses selects every pattern space. +.PP +A command line with +one address selects each pattern space that matches the address. +(Address +.L 0 +is never matched.) +.PP +A command line with +two addresses selects the inclusive range from the first +pattern space that matches the first address through +the next pattern space that matches +the second. +(If the second address is a number less than or equal +to the line number first selected, only one +line is selected.) +Thereafter the process is repeated, looking again for the +first address. +.PP +Editing commands can be applied to non-selected pattern +spaces by use of the negation function +.L ! +(below). +.PP +In the following list of functions the +maximum number of permissible addresses +for each function is indicated in parentheses. +.PP +A +.I text +argument consists of one or more lines, +all but the last of which end with +.L \e +to hide the +newline. +Backslashes in text are treated like backslashes +in the replacement string of an +.L s +command, +and may be used to protect initial blanks and tabs +against the stripping that is done on +every script line. +.PP +An +.I rfile +or +.I wfile +argument must terminate the command +line and must be preceded by exactly one blank. +Each +.I wfile +is created before processing begins. +There can be at most 120 distinct +.I wfile +arguments. +.TP +.RB (1) \|a\e +.br +.ns +.TP +.I text +Append. +Place +.I text +on the output before +reading the next input line. +.HP +.RB (2) \|b +.I label +.br +Branch to the +.B : +command bearing the +.I label. +If +.I label +is empty, branch to the end of the script. +.TP +.RB (2) \|c\e +.br +.ns +.TP +.I text +Change. +Delete the pattern space. +With 0 or 1 address or at the end of a 2-address range, place +.I text +on the output. +Start the next cycle. +.TP +.RB (2) \|d +Delete the pattern space. +Start the next cycle. +.TP +.RB (2) \|D +Delete the initial segment of the +pattern space through the first newline. +Start the next cycle. +.TP +.RB (2) \|g +Replace the contents of the pattern space +by the contents of the hold space. +.TP +.RB (2) \|G +Append the contents of the hold space to the pattern space. +.TP +.RB (2) \|h +Replace the contents of the hold space by the contents of the pattern space. +.TP +.RB (2) \|H +Append the contents of the pattern space to the hold space. +.TP +.RB (1) \|i\e +.br +.ns +.TP +.I text +Insert. +Place +.I text +on the standard output. +.TP +.RB (2) \|l +Literal. +Place an unambiguous image of the pattern +space on the standard output, +using C escape sequences. +Break long lines, indicating the breakpoint by +a single backslash. +Append +.B \en +if pattern space ends with space or newline. +.TP +.RB (2) \|n +Copy the pattern space to the standard output. +Replace the pattern space with the next line of input. +.TP +.RB (2) \|N +Append the next line of input to the pattern space +with an embedded newline. +(The current line number changes.) +.TP +.RB (2) \|p +Print. +Copy the pattern space to the standard output. +.TP +.RB (2) \|P +Copy the initial segment of the pattern space through +the first newline to the standard output. +.TP +.RB (1) \|q +Quit. +Branch to the end of the script. +Do not start a new cycle. +.HP +.RB (2) \|r +.I rfile +.br +Read the contents of +.IR rfile . +Place them on the output before reading +the next input line. +.TP +.RB (2) \|s/\fIregular-expression\fP/\fIreplacement\fP/\fIflags +Substitute the +.I replacement +string for instances of the +.I regular-expression +in the pattern space. +Any character may be used instead of +.LR / . +For a fuller description see +.IR ed (1); +although unlike +.I ed , +the trailing +.B / +.I must +be supplied. +.I Flags +is zero or more of +.RS +.TP +.B g +Global. +Substitute for all non-overlapping instances of the +.I regular expression +rather than just the +first one. +.TP +.B p +Print the pattern space if a replacement was made. +.TP +.BI w " wfile" +Write. +Append the pattern space to +.I wfile +if a replacement +was made. +.RE +.HP +.RB (2) \|t +.I label +.br +Test. +Branch to the +.L : +command bearing the +.I label +if any +substitutions have been made since the most recent +reading of an input line or execution of a +.LR t . +If +.I label +is empty, branch to the end of the script. +.TP +.RB (2) \|w +.I wfile +.br +Write. +Append the pattern space to +.I wfile. +.TP +.RB (2) \|x +Exchange the contents of the pattern and hold spaces. +.TP +.RB (2) \|y/\fIstring1\fP/\fIstring2\fP/ +Transform. +Replace all occurrences of characters in +.I string1 +with the corresponding character in +.I string2. +The lengths of +.I +string1 +and +.I string2 +must be equal. +.HP +.RB (2) ! +.I function +.br +Don't. +Apply the +.I function +(or group, if +.I function +is +.LR { ) +only to lines +.I not +selected by the address(es). +.HP +.RB (0) # +Comment. Ignore the rest of the line. +.HP +.RB (0) \|: +.I label +.br +This command does nothing; it bears a +.I label +for +.B b +and +.B t +commands to branch to. +.TP +.RB (1) \|= +Place the current line number on the standard output as a line. +.TP +.RB (2) \|{ +Execute the following commands through a matching +.L } +only when the pattern space is selected. +.TP +.RB (0) \| +An empty command is ignored. +.ne 4 +.SH EXAMPLES +.TP +.B sed 10q file +Print the first 10 lines of the file. +.TP +.B sed '/^$/d' +Delete empty lines from standard input. +.TP +.B sed 's/UNIX/& system/g' +Replace every instance of +.L UNIX +by +.LR "UNIX system" . +.PP +.EX +sed 's/ *$// \fRdrop trailing blanks\fP +/^$/d \fRdrop empty lines\fP +s/ */\e \fRreplace blanks by newlines\fP +/g +/^$/d' chapter* +.EE +.ns +.IP +Print the files +.BR chapter1 , +.BR chapter2 , +etc. one word to a line. +.PP +.EX +nroff -ms manuscript | sed ' +${ + /^$/p \fRif last line of file is empty, print it\fP +} +//N \fRif current line is empty, append next line\fP +/^\en$/D' \fRif two lines are empty, delete the first\fP +.EE +.ns +.IP +Delete all but one of each group of empty lines from a +formatted manuscript. +.PP +.EX +ls /usr/* | sed ' +/^$/d \fRdelete empty lines\fP +/^[/].*:$/{ \fRlook for lines like \fP/usr/lem: + s/:$/\e// \fRreplace \fP:\fR by \fP/ + h \fRhold directory name\fP + d \fRdon't print; get next line\fP +} +G \fRappend held directory name\fP +s/\e(.*\e)\en\e(.*\e)/\e2\e1/' \fRexchange file and directory\fP +.EE +.ns +.IP +List all files in user directories, as +.B ls -d /usr/*/* +would do if it didn't cause argument list overflow. +.SH SEE ALSO +.IR ed (1), +.IR gre (1), +.IR awk (1), +.IR lex (1), +.IR cut (1), +.IR split (1), +.IR sam (9.1) +.br +L. E. McMahon, +`SED \(em A Non-interactive Text Editor', +this manual, Volume 2. +.SH BUGS +If input is from a pipe, buffering may consume +characters beyond a line on which a +.L q +command is executed. |
