*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->OpenBSD man pages -> sed (1)              
Title
Content
Arch
Section
 

SED(1)

Contents


NAME    [Toc]    [Back]

     sed - stream editor

SYNOPSIS    [Toc]    [Back]

     sed [-an] command [file ...]
     sed [-an] [-e command] [-f command_file] [file ...]

DESCRIPTION    [Toc]    [Back]

     The sed utility reads the specified files, or  the  standard
input if no
     files  are  specified, modifying the input as specified by a
list of commands.
  The input is then written to the standard output.

     A single command may be specified as the first  argument  to
sed.  Multiple
     commands  may  be  specified  by using the -e or -f options.
All commands
     are applied to the input in the order they are specified regardless of
     their origin.

     The options are as follows:

     -a      The files listed as parameters for the `w' functions
are created
             (or truncated) before any processing begins, by  default.  The -a
             option causes sed to delay opening each file until a
command containing
 the related `w' function  is  applied  to  a
line of input.

     -e command
             Append the editing commands specified by the command
argument to
             the list of commands.

     -f command_file
             Append  the  editing  commands  found  in  the  file
command_file to the
             list  of commands.  The editing commands should each
be listed on
             a separate line.

     -n      By default, each line of  input  is  echoed  to  the
standard output
             after  all  of the commands have been applied to it.
The -n option
             suppresses this behavior.

     The form of a sed command is as follows:

           [address[,address]]function[arguments]

     Whitespace may be inserted before the first address and  the
function portions
 of the command.

     Normally, sed cyclically copies a line of input, not including its terminating
 newline character,  into  a  pattern  space,  (unless
there is something
  left  after  a `D' function), applies all of the commands with addresses
 that select that pattern space, copies  the  pattern
space to the
     standard  output,  appending a newline, and deletes the pattern space.

     Some of the functions use a hold space to save all  or  part
of the pattern
     space for subsequent retrieval.

SED ADDRESSES    [Toc]    [Back]

     An  address is not required, but if specified must be a number (that
     counts input lines cumulatively across input files), a  dollar character
     (`$')  that  addresses  the last line of input, or a context
address (which
     consists of a regular expression preceded and followed by  a
delimiter).

     A  command  line  with  no  addresses  selects every pattern
space.

     A command line with one address selects all of  the  pattern
spaces that
     match 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 line number first  selected,  only
that line is
     selected.)  Starting at the first line following the selected range, sed
     starts looking again for the first address.

     Editing commands can  be  applied  to  non-selected  pattern
spaces by use of
     the exclamation character (`!') function.

SED REGULAR EXPRESSIONS    [Toc]    [Back]

     The  sed  regular  expressions are basic regular expressions
(BRE's; see
     re_format(7) for more information).  In  addition,  sed  has
the following
     two additions to BRE's:

     1.    In a context address, any character other than a backslash (`') or
          newline character may be used to  delimit  the  regular
expression.
          Also, putting a backslash character before the delimiting character
          causes the character to be treated literally.  For  example, in the
          context address cfx, the RE delimiter is an `x' and the
second
 `x' stands for itself, so that the regular  expression is
          ``abcxdef''.

     2.    The escape sequence matches a newline character embedded in the
          pattern space.  You can't, however, use a literal  newline character
          in an address or in the substitute command.

     One  special feature of sed regular expressions is that they
can default
     to the last regular expression used.  If a  regular  expression is empty,
     i.e.,  just the delimiter characters are specified, the last
regular expression
 encountered is used instead.  The last regular  expression is defined
  as the last regular expression used as part of an address or substitute
 command, and at run-time, not compile-time.  For example, the
     command  ``/abc/s//XXX/''  will  substitute  ``XXX'' for the
pattern ``abc''.

SED FUNCTIONS    [Toc]    [Back]

     In the following list of commands,  the  maximum  number  of
permissible addresses
  for  each command is indicated by [0addr], [1addr],
or [2addr],
     representing zero, one, or two addresses.

     The argument text consists of one or more lines.  To embed a
newline in
     the text, precede it with a backslash.  Other backslashes in
text are
     deleted and the following character taken literally.

     The `r' and `w' functions take an optional  file  parameter,
which should
     be  separated  from the function letter by whitespace.  Each
file given as
     an argument to sed is created (or  its  contents  truncated)
before any input
 processing begins.

     The `b', `r', `s', `t', `w', `y', `!', and `:' functions all
accept additional
 arguments.  The following synopses indicate which arguments have
     to  be  separated  from  the  function letters by whitespace
characters.

     Two of the functions take a function-list.  This is  a  list
of sed functions
 separated by newlines, as follows:

           { function
             function
             ...
             function
           }

     The  `{'  can  be  preceded  or followed by whitespace.  The
function can be
     preceded by whitespace as well.  The terminating `}' must be
preceded by
     a newline or optional whitespace.

     [2addr] function-list
               Execute  function-list only when the pattern space
is selected.

     [1addr]a     text

               Write text to standard output  immediately  before
each attempt
               to  read a line of input, whether by executing the
`N' function
               or by beginning a new cycle.

     [2addr]b[label]
               Branch to the `:' function with the specified  label.  If the
               label  is  not specified, branch to the end of the
script.

     [2addr]c     text

               Delete the pattern space.  With 0 or 1 address  or
at the end of
               a 2-address range, text is written to the standard
output.

     [2addr]d  Delete the pattern space and start the next cycle.

     [2addr]D   Delete  the  initial segment of the pattern space
through the
               first newline character and start the next  cycle.

     [2addr]g  Replace the contents of the pattern space with the
contents of
               the hold space.

     [2addr]G  Append a newline character followed  by  the  contents of the hold
               space to the pattern space.

     [2addr]h   Replace  the  contents of the hold space with the
contents of the
               pattern space.

     [2addr]H  Append a newline character followed  by  the  contents of the pattern
 space to the hold space.

     [1addr]i     text

               Write text to the standard output.

     [2addr]l   (The letter ell.)  Write the pattern space to the
standard output
 in a visually unambiguous form.  This form  is
as follows:

                     backslash          \
                     alert
                     form-feed
                     newline
                     carriage-return
                     tab
                     vertical tab
               Non-printable characters are written as three-digit octal numbers
 (with a preceding backslash) for each byte in
the character
 (most significant byte first).  Long lines are
folded, with
               the point of folding  indicated  by  displaying  a
backslash followed
  by  a  newline.   The  end  of each line is
marked with a `$'.

     [2addr]n  Write the pattern space to the standard output  if
the default
               output  has  not  been suppressed, and replace the
pattern space
               with the next line of input.

     [2addr]N  Append the next  line  of  input  to  the  pattern
space, using an
               embedded newline character to separate the appended material
               from the original contents.  Note that the current
line number
               changes.

     [2addr]p  Write the pattern space to standard output.

     [2addr]P   Write  the pattern space, up to the first newline
character to
               the standard output.

     [1addr]q  Branch to the end of the script and  quit  without
starting a new
               cycle.

     [1addr]r file
               Copy  the  contents of file to the standard output
immediately
               before the next attempt to read a line  of  input.
If file cannot
 be read for any reason, it is silently ignored
and no error
               condition is set.

     [2addr]s/re/replacement/flags
               Substitute the replacement string  for  the  first
instance of the
               regular  expression  in  the  pattern  space.  Any
character other
               than backslash or newline can be used instead of a
slash to delimit
  the  RE and the replacement.  Within the RE
and the replacement,
 the RE delimiter itself can be used  as
a literal
               character if it is preceded by a backslash.

               An ampersand (`&') appearing in the replacement is
replaced by
               the string matching the RE.  The  special  meaning
of `&' in this
               context  can  be  suppressed  by preceding it by a
backslash.  The
               string `               matched by the  corresponding backreference expression (see
               re_format(7)).

               A  line  can  be  split  by substituting a newline
character into
               it.  To specify a newline  character  in  the  replacement string,
               precede it with a backslash.

               The  value  of flags in the substitute function is
zero or more
               of the following:

                     0 ... 9
                             Make the substitution only  for  the
N'th occurrence
  of  the regular expression in
the pattern
                             space.

                     g       Make the substitution for  all  nonoverlapping
                             matches  of  the regular expression,
not just the
                             first one.

                     p       Write the pattern space to  standard
output if a
                             replacement  was  made.   If the replacement string
                             is identical to that  which  it  replaces, it is
                             still  considered to have been a replacement.

                     w file  Append the pattern space to file  if
a replacement
                             was made.  If the replacement string
is identical
                             to that which  it  replaces,  it  is
still considered
                             to have been a replacement.

     [2addr]t[label]
               Branch  to  the  `:' function bearing the label if
any substitutions
 have been made since the most recent reading
of an input
               line  or execution of a `t' function.  If no label
is specified,
               branch to the end of the script.

     [2addr]w file
               Append the pattern space to the file.

     [2addr]x  Swap the contents of the pattern and hold  spaces.

     [2addr]y/string1/string2/
               Replace  all  occurrences of characters in string1
in the pattern
               space  with  the  corresponding  characters   from
string2.  Any
               character other than a backslash or newline can be
used instead
               of a slash to delimit the strings.  Within string1
and string2,
               a backslash followed by any character other than a
newline is
               that literal character, and a  backslash  followed
by an `n' is
               replaced by a newline character.

     [2addr]!function, [2addr]!function-list
               Apply  the  function  or function-list only to the
lines that are
               not selected by the address(es).

     [0addr]:label
               This function does nothing; it bears  a  label  to
which the `b'
               and `t' commands may branch.

     [1addr]=   Write the line number to the standard output followed by a newline
 character.

     [0addr]   Empty lines are ignored.

     [0addr]#  The `#' and the remainder of the line are  ignored
(treated as a
               comment),  with  the  single exception that if the
first two characters
 in the file are `#n', the default output is
suppressed.
               This  is  the  same as specifying the -n option on
the command
               line.

     The sed utility exits 0 on success or >0  if  an  error  occurred.

SEE ALSO    [Toc]    [Back]

      
      
     awk(1), ed(1), grep(1), regex(3), re_format(7)

     "SED      --     A     Non-interactive     Text     Editor",
/usr/share/doc/usd/15.sed/.

STANDARDS    [Toc]    [Back]

     The sed function is expected to be a superset  of  the  IEEE
Std 1003.2
     (``POSIX.2'') specification.

HISTORY    [Toc]    [Back]

     A sed command appeared in Version 7 AT&T UNIX.

OpenBSD      3.6                        December     30,     1993
[ Back ]
 Similar pages
Name OS Title
s2p OpenBSD a stream editor
psed OpenBSD a stream editor
sed Linux a Stream EDitor
sed HP-UX stream text editor
edit FreeBSD easy editor
ed FreeBSD text editor
red FreeBSD text editor
emacs Tru64 emacs editor
ld Tru64 link editor
ed OpenBSD text editor
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service