Annotation of lucent/sys/man/1/sed, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.