manpagez: man pages & more
info sed
Home | html | info | man

File: sed.info,  Node: sed script overview,  Next: sed commands list,  Up: sed scripts

3.1 ‘sed’ script overview
=========================

A ‘sed’ program consists of one or more ‘sed’ commands, passed in by one
or more of the ‘-e’, ‘-f’, ‘--expression’, and ‘--file’ options, or the
first non-option argument if zero of these options are used.  This
document will refer to "the" ‘sed’ script; this is understood to mean
the in-order concatenation of all of the SCRIPTs and SCRIPT-FILEs passed
in.  *Note Overview::.

   ‘sed’ commands follow this syntax:

     [addr]X[options]

   X is a single-letter ‘sed’ command.  ‘[addr]’ is an optional line
address.  If ‘[addr]’ is specified, the command X will be executed only
on the matched lines.  ‘[addr]’ can be a single line number, a regular
expression, or a range of lines (*note sed addresses::).  Additional
‘[options]’ are used for some ‘sed’ commands.

   The following example deletes lines 30 to 35 in the input.  ‘30,35’
is an address range.  ‘d’ is the delete command:

     sed '30,35d' input.txt > output.txt

   The following example prints all input until a line starting with the
string ‘foo’ is found.  If such line is found, ‘sed’ will terminate with
exit status 42.  If such line was not found (and no other error
occurred), ‘sed’ will exit with status 0.  ‘/^foo/’ is a
regular-expression address.  ‘q’ is the quit command.  ‘42’ is the
command option.

     sed '/^foo/q42' input.txt > output.txt

   Commands within a SCRIPT or SCRIPT-FILE can be separated by
semicolons (‘;’) or newlines (ASCII 10).  Multiple scripts can be
specified with ‘-e’ or ‘-f’ options.

   The following examples are all equivalent.  They perform two ‘sed’
operations: deleting any lines matching the regular expression ‘/^foo/’,
and replacing all occurrences of the string ‘hello’ with ‘world’:

     sed '/^foo/d ; s/hello/world/g' input.txt > output.txt

     sed -e '/^foo/d' -e 's/hello/world/g' input.txt > output.txt

     echo '/^foo/d' > script.sed
     echo 's/hello/world/g' >> script.sed
     sed -f script.sed input.txt > output.txt

     echo 's/hello/world/g' > script2.sed
     sed -e '/^foo/d' -f script2.sed input.txt > output.txt

   Commands ‘a’, ‘c’, ‘e’, ‘i’, ‘r’, ‘R’, ‘w’, ‘W’, due to their syntax,
cannot be followed by semicolons working as command separators and thus
should be terminated with newlines or be placed at the end of a SCRIPT
or SCRIPT-FILE.  Commands can also be preceded with optional
non-significant whitespace characters.  *Note Multiple commands
syntax::.

© manpagez.com 2000-2026
Individual documents may contain additional copyright information.