Home
        <a name=

sed

SED is a stream editor. A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).
While in some ways similar to an editor which permits scripted edits, SED works by making only one pass over the input(s), and is consequently more efficient. But it is SED's ability to filter text in a pipeline which particularly distinguishes it from other types of editors.

SYNTAX
      sed [options]...

OPTIONS

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.

`-e SCRIPT'
`--expression=SCRIPT'
     Add the commands in SCRIPT to the set of commands to be run while
     processing the input.

`-f SCRIPT-FILE'
`--file=SCRIPT-FILE'
     Add the commands contained in the file SCRIPT-FILE to the set of
     commands to be run while processing the input.

`-n'
`--quiet'
`--silent'
     By default, SED will print out the pattern space at then end of
     each cycle through the script.  These options disable this
     automatic printing, and SED will only produce output when
     explicitly told to via the `p' command.

`-h'
`--help'
     Print a usage message and then exit.

`-V'
`--version'
     Print out version info and exit.

If no `-e', `-f', `--expression', or `--file' options are given on the command-line, then the first non-option argument on the command line is taken to be the SCRIPT to be executed. If any command-line parameters remain after processing the above, these parameters are interpreted as the names of input files to be processed. A file name of `-' refers to the standard input stream. The standard input will processed if no file names are specified.

sed supports regular expressions (like awk), and can select whole lines or patterns of text.
e.g.

`/REGEXP/'
     This will select any line which matches the regular expression
     REGEXP.  If REGEXP itself includes any `/' characters, each must
     be escaped by a backslash (`\').

`/REGEXP/I'
`\%REGEXP%I'
     The `I' modifier to regular-expression matching is a GNU extension
     which causes the REGEXP to be matched in a case-insensitive manner.

Having selected a pattern you can either delete or replace it...

`d'
     Delete the pattern space; immediately start next cycle.

`s/REGEXP/REPLACEMENT/FLAGS'
     (The `/' characters may be uniformly replaced by any other single
     character within any given `s' command.)

The `/' character (or whatever other character is used in its stead) can appear in the REGEXP or REPLACEMENT only if it is preceded by a `\' character. Also newlines may appear in the REGEXP using the two character sequence `\n'.

The `s' command attempts to match the pattern space against the supplied REGEXP. If the match is successful, then that portion of the pattern space which was matched is replaced with REPLACEMENT.

The REPLACEMENT can contain `\N' (N being a number from 1 to 9, inclusive) references, which refer to the portion of the match which is contained between the Nth `\(' and its matching `\)'.
Also, the REPLACEMENT can contain unescaped `&' characters which will reference the whole matched portion of the pattern space. To include a literal `\', `&', or newline in the final replacement, be sure to precede the desired `\', `&', or newline in the REPLACEMENT with a `\'.

     The `s' command can be followed with zero or more of the following
     FLAGS:

    `g'
          Apply the replacement to *all* matches to the REGEXP, not
          just the first.

    `p'
          If the substitution was made, then print the new pattern
          space.

    `NUMBER'
          Only replace the NUMBERth match of the REGEXP.

    `w FILE-NAME'
          If the substitution was made, then write out the result to
          the named file.

    `I'
          Match REGEXP in a case-insensitive manner.
          (This is a GNU extension.)

more (much more) detail is available from `info sed'

"life is 10% what happens to me and 90% how I react to it" - Charles Swindoll

Related commands
:

awk - Find and Replace text within file(s)
grep - Search file(s) for lines that match a given pattern
regex(3)
re_format(7)