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::.
