Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ sed(1) — UTek 4.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

awk(1)

ed(1)

grep(1)

lex(1)



SED(1)                  COMMAND REFERENCE                  SED(1)



NAME
     sed - stream editor

SYNOPSIS
     sed [ -n ] [ -g ] scripts [ filename ... ]

DESCRIPTION
     Sed copies the named files (standard input default) to the
     standard output, edited according to a script of commands.

     The scripts argument is actually a set of arguments which
     contain the editing scripts (script) and script files
     (sfilename). Scripts can be in one of the following forms :

          [-e] script    - the script is on the command line
          -f sfilename   - the script is in the file

     Any number of script and script filename arguments can be
     given.  If there is only one script and it is on the command
     line, the -e is optional.

     Normally, all input lines are copied to the standard output.
     The -n option causes only those lines that are explicitly
     printed by the editing commands to be copied.

     The -g option causes all occurrences of the substitute
     command (see the editing command descriptions) to be global,
     as if each has the g flag.

     A script consists of comments and editing commands, one per
     line. (There is a limit of 500 sed commands per script.)
     Comments are lines beginning with the character `#', and are
     ignored by sed. Editing commands are of the following form:

          [address [, address] ] function [arguments]

     In normal operation sed cyclically copies a line of input
     into a pattern space (unless there is something left after a
     D command), applies in sequence all commands whose addresses
     select that pattern space, and at the end of the script
     copies the pattern space to the standard output (except
     under -n) and deletes the pattern space.

     An address is either a decimal number that counts input
     lines cumulatively across files, a $ that addresses the last
     line of input, or a context address, /regular expression/.
     The context address is in the style of ed(1) and is modified
     in the following way:

          The escape sequence \n matches a
          newline embedded in the pattern space.




Printed 4/6/89                                                  1





SED(1)                  COMMAND REFERENCE                  SED(1)



     A command line with no addresses selects every pattern
     space.

     A command line with one address selects each pattern space
     that matches the address.

     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 linenumber first selected, only one line is
     selected.) Thereafter the process is repeated, looking again
     for the first address.

     Editing commands can be applied only to nonselected pattern
     spaces by use of the negation function ! (below).

     An argument denoted text consists of one or more lines, all
     but the last of which end with a backslash (\) to hide the
     newline.  Backslashes in text are treated like backslashes
     in the replacement string of an s command, and may be used
     to protect initial blanks and tabs against the stripping
     that is done on every script line.

     An argument denoted rfilename or wfilename must terminate
     the command line and must be preceded by exactly one blank.
     Each wfilename is created before processing begins.

     In the following list of functions the maximum number of
     permissible addresses for each function is indicated in
     parentheses.

     Functions

     (1) a\ text
            Append. Place text on the output before reading the
            next input line.

     (2) b label
            Branch to the colon (:) command bearing the label.
            If label is empty, branch to the end of the script.

     (2) c\ text
            Change.  Delete the pattern space.  With zero or one
            address or at the end of a two-address range, place
            text on the output.  Start the next cycle.

     (2) d  Delete the pattern space.  Start the next cycle.

     (2) D  Delete the initial segment of the pattern space
            through the first newline.  Start the next cycle.




Printed 4/6/89                                                  2





SED(1)                  COMMAND REFERENCE                  SED(1)



     (2) g  Replace the contents of the pattern space by the
            contents of the hold space.

     (2) G  Append the contents of the hold space to the pattern
            space.

     (2) h  Replace the contents of the hold space by the
            contents of the pattern space.

     (2) H  Append the contents of the pattern space to the hold
            space.

     (1) i\ text
            Insert. Place text on the standard output.

     (2) n  Copy the pattern space to the standard output.
            Replace the pattern space with the next line of
            input.

     (2) N  Append the next line of input to the pattern space
            with an embedded newline.  (The current line number
            changes.)

     (2) p  Print.  Copy the pattern space to the standard
            output.

     (2) P  Copy the initial segment of the pattern space through
            the first newline to the standard output.

     (1) q  Quit.  Branch to the end of the script.  Do not start
            a new cycle.

     (2) r rfilename
            Read the contents of rfilename.  Place them on the
            output before reading the next input line.

     (2) s /regular expression/replacement/flags
            Substitute the replacement string for instances of
            the regular expression in the pattern space.  Any
            character may be used instead of the slash (/).  For
            a fuller description see ed(1).  Flags is zero or
            more of the following:

            g         Global.  Substitute for all nonoverlapping
                      instances of the regular expression rather
                      than just the first one.

            p         Print the pattern space if a replacement
                      was made.

            w wfilename
                      Write.  Append the pattern space to



Printed 4/6/89                                                  3





SED(1)                  COMMAND REFERENCE                  SED(1)



                      wfilename if a replacement was made.

     (2) t label
            Test.  Branch to the colon (:) command bearing the
            label if any substitutions have been made since the
            most recent reading of an input line or execution of
            a t.  If label is empty, branch to the end of the
            script.

     (2) w wfilename
            Write.  Append the pattern space to wfilename.

     (2) x  Exchange the contents of the pattern and hold spaces.

     (2) y /string1/string2/
            Transform.  Replace all occurrences of characters in
            string1 with the corresponding character in string2.
            The lengths of string1 and string2 must be equal.

     (2) ! function
            Don't.  Apply the function (or group, if function is
            {) only to lines not selected by the address(es).

     (0) : label
            This command does nothing; it bears a label for b and
            t commands to branch to.

     (1) =  Place the current linenumber on the standard output
            as a line.

     (2) {  Execute the following commands through a matching }
            only when the pattern space is selected.

     (0)    An empty command is ignored.

OPTIONS
     -e script
        The script is on the command line.

     -f sfilename
        The script is in sfilename.

     -g Causes all occurrences of the substitute command (see the
        editing command descriptions) to be global, as if each
        has the g flag.

     -n Causes only those lines that are explicitly printed by
        the editing commands to be copied.

EXAMPLES
     The following example copies the contents of the file orig
     to the file new, deleting lines beginning with a and ending



Printed 4/6/89                                                  4





SED(1)                  COMMAND REFERENCE                  SED(1)



     with e:

          sed '/^a.*e$/d' orig > new

     This example copies the contents of the file orig.c to the
     file new.c, changing all references to system include files
     (like #include <stdio.h>) to references to local include
     files with the same name (\t represents the tab character):

          sed 's/^\(#[ \t]*include[ \t][ \t]*\)<\(.*\)>$/\1"\2"/'
               orig.c > new.c

     This example copies the contents of the file orig to the
     terminal, deleting all blank lines, and also performing the
     editing commands in the file example.sed:

          sed -e '/^[ \t]*$/d' -f example.sed orig

     The following examples are equivalent. Both copy the
     contents of the file orig to the file new, replacing all
     occurrences of abc with 123:

          sed '1,$s/abc/123/g' orig > new
          sed -g '1,$s/abc/123/' orig > new

     This example copies the file input to the standard output,
     replacing the first occurence of the sequence the with a,
     and copying all other lines as is:

          sed 's/the/a/
          t found
          b
          :found
          n
          b found' input

RETURN VALUE
     [NO_ERRS]      Command completed without error.

     [USAGE]        Incorrect command line syntax. Execution
                    terminated.

     [NP_WARN]      An error warranting a warning message
                    occurred. Execution continues.

     [NP_ERR]       An error occurred that was not a system
                    error.  Execution terminated.

     [P_ERR]        A system error occurred. Execution
                    terminated.  See intro(2) for more
                    information on system errors.




Printed 4/6/89                                                  5





SED(1)                  COMMAND REFERENCE                  SED(1)



CAVEATS
     The number of distinct files that can be written by the w
     command is limited to the number of files that can be open
     in a program at the same (subtract one from this if input is
     not from standard input).

SEE ALSO
     awk(1), ed(1), grep(1), and lex(1).















































Printed 4/6/89                                                  6





































































%%index%%
na:216,71;
sy:287,238;
de:525,2571;3384,2325;5997,2254;8539,1611;
op:10150,591;
ex:10741,242;11271,1280;
rv:12551,665;
ca:13504,313;
se:13817,196;
%%index%%000000000180

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026