NAME
	  sed -	Provides a stream line editor

     SYNOPSIS
	  sed [-n] [-e escript...]  [script] [-f source_file] [file
	  ...]


	  The sed command modifies lines from the specified file or
	  from standard	input according	to edit	commands and writes
	  them to standard output.

     FLAGS
	  -e escript
	      Uses the string script as	an editing script.  If you are
	      using just one -e	flag and no -f flag, you can omit the
	      -e flag and include the single script on the command
	      line as an argument to sed.

	  -f source_file
	      Uses source_file as the source of	the edit script.  The
	      source_file is a set of editing commands to be applied
	      to file.

	  -n  Suppresses all information normally written to standard
	      output.


     DESCRIPTION
	  The sed command includes many	features for selecting lines
	  to be	modified and making changes only to the	selected
	  lines.

	  The sed command uses two work	spaces for holding the line
	  being	modified:  the pattern space, where the	selected line
	  is held, and the hold	space, where a line can	be stored tem-
	  porarily.

	  An edit script consists of individual	subcommands, each one
	  on a separate	line.  The general form	of sed subcommands is
	  as follows:

	  [address_range] function [modifier ...]


	  The sed command processes each input file by reading an
	  input	line into a pattern space, sequentially	applying all
	  sed subcommands in sequence whose addresses select that
	  line,	and writing the	pattern	space to standard output.  It
	  then clears the pattern space	and repeats this process for
	  each line in the input file.	Some of	the subcommands	use a
	  hold space to	save all or part of the	pattern	space for
	  subsequent retrieval.

	  When a command includes an address, either a line number or
	  a search pattern, only the addressed line or lines are
	  affected by the command.  Otherwise, the command is applied
	  to all lines.

	The sed	Addresses
	  An address is	either a decimal line number, a	$, which
	  addresses the	last line of input, or a context address.  A
	  context address is a regular expression as described for
	  grep,	except that you	can select the character delimiter for
	  patterns.  The general form of the expression	is as follows:

	  \?pattern\?


	  The ?	represents a character delimiter you select.  This
	  delimiter cannot be a	multibyte character.

	  The default form for the pattern is as follows:

	  /pattern/



	    o  The sequence \n matches a newline character in the pat-
	       tern space, except the terminating new line.

	    o  A . (dot) matches any character except a	terminating
	       newline character.  That	is, unlike grep, which cannot
	       match a newline character in the	middle of a line, sed
	       can match a newline character in	the pattern space.


	  Certain commands allow you to	specify	one line or a range of
	  lines	to which the command applies.  These commands are
	  called addressed commands.  The following rules apply	to
	  addressed commands:


	    o  A command line with no address selects every line.

	    o  A command line with one address,	expressed in context
	       form, selects each line that matches the	address.

	    o  A command line with two addresses separated by a	,
	       (comma) or ; (semicolon)	selects	the entire range from
	       the first line that matches the first address through
	       the next	line that matches the second.  (If the second
	       address is a number less	than or	equal to the line
	       number first selected, only one line is selected.)
	       Thereafter, the process is repeated, looking again for
	       the first address.


     SUBCOMMANDS
	  Backslashes in text are treated like backslashes in the
	  replacement string of	an s command and can be	used to	pro-
	  tect initial spaces and tabs against the stripping that is
	  done on every	script line.

	  The text argument accompanying the a\, c\, and i\ commands
	  can continue onto more than one line,	provided all lines but
	  the last end with a \	(backslash) to quote the newline char-
	  acter.

	  The read_file	and write_file arguments must end the command
	  line and must	be preceded by exactly one space.  Each
	  write_file is	created	before processing begins.

	  The sed command can process up to 99 commands	in a file.

	  In the following list	of subcommands,	the maximum number of
	  permissible addresses	for each subcommand is indicated in
	  parentheses.	The sed	script subcommands are as follows:


	  (1) a\

	  text
	      Places text on the output	before reading the next	input
	      line.

	  (2)b[label]
	      Branches to the :	command	bearing	the label.  If label
	      is empty,	it branches to the end of the script.

	  (2)c\

	  text
	      Deletes the pattern space.  With a 0 or 1	address	or at
	      the end of a 2-address range, places text	on the output.
	      Then it starts the next cycle.

	  (2)d
	      Deletes the pattern space.  Then it starts the next
	      cycle.

	  (2)D
	      Deletes the initial segment of the pattern space through
	      the first	newline	character.  Then it starts the next
	      cycle.

	  (2)g
	      Replaces the contents of the pattern space with the con-
	      tents of the hold	space.

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

	  (2)h
	      Replaces the contents of the hold	space with the con-
	      tents of the pattern space.

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

	  (1)i\

	  text
	      Writes text to standard output before reading the	next
	      line into	the pattern space.

	  (2)l
	      Writes the pattern space to standard output, showing
	      nondisplayable characters	as hexadecimal values.	Long
	      lines are	folded.

	  (2)n
	      Writes the pattern space to standard output.  It
	      replaces the pattern space with the next line of input.

	  (2)N
	      Appends the next line of input to	the pattern space with
	      an embedded newline character.  (The current line	number
	      changes.)	 You can use this to search for	patterns that
	      are split	onto two lines.

	  (2)p
	      Writes the pattern space to standard output.

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

	  (1)q
	      Branches to the end of the script.  It does not start a
	      new cycle.

	  (1)r read_file
	      Reads the	contents of read_file.	It places contents on
	      the output before	reading	the next input line.

	  (2)s/pattern/replacement/flags
	      Substitutes the replacement string for the first
	      occurrence of the	pattern	in the pattern space.  Any
	      character	that is	displayed after	the s command can sub-
	      stitute for the /	(slash)	separator.

	      You can add zero or more of the following	flags:


	      n	  Where	n is 1 to 512, substitutes replacement for the
		  nth occurrence of pattern on each addressed line,
		  rather than for the first occurrence.

	      g	  Substitutes replacement for all nonoverlapping
		  instances of pattern on each addressed line, rather
		  than for just	the first one (or for the one speci-
		  fied by n).

	      p	  Writes the pattern space to standard output if a
		  replacement was made.

	      w	write_file
		  Writes the pattern space to write_file if a replace-
		  ment was made.  Appends the pattern space to
		  write_file.  If write_file was not already created
		  by a previous	write by this sed script, sed creates
		  it.  Each write_file is created before processing
		  begins.


	  (2)t[label]
	      Branches to :label in the	script file if any substitu-
	      tions were made since the	most recent reading of an
	      input line execution of a	t subcommand.  If you do not
	      specify label, control transfers to the end of the
	      script.

	  (2)w write_file
	      Appends the pattern space	to write_file.

	  (2)x
	      Exchanges	the contents of	the pattern space and the hold
	      space.

	  (2)y/pattern1/pattern2/
	      Replaces all occurrences of characters in	pattern1 with
	      the corresponding	characters from	pattern2. pattern1 and
	      pattern2 must contain the	same number of characters.

	  (2)!sed_command
	      Applies the specified sed	subcommand only	to lines not
	      selected by the address or addresses.

	  (0):label
	      This script entry	simply marks a branch point to be
	      referenced by the	b and t	commands.  This	label can be
	      any sequence of eight or fewer bytes.

	  (1)=
	      Writes the current line number to	standard output	as a
	      line.

	  (2){subcommand ...

	  }   Groups subcommands enclosed in { } (braces).

	  (0) Ignores an empty command.

	  (0)#
	      If a # (number sign) appears as the first	character on
	      the first	line of	a script file, that entire line	is
	      treated as a comment, with one exception.	 If the	char-
	      acter after the #	is an n, the default output is
	      suppressed.  The rest of the line	after the #n is
	      ignored.	A script must contain at least one noncomment
	      line.


     EXAMPLES
	   1.  To perform a global change, enter:

	       sed  "s/happy/enchanted/g"  chap1  >chap1.new



	       This replaces each occurrence of	happy found in the
	       file chap1 with enchanted, and puts the edited version
	       in a separate file named	chap1.new.  The	g at the end
	       of the s	subcommand tells sed to	make as	many substitu-
	       tions as	possible on each line.	Without	the g, sed
	       replaces	only the first happy on	a line.

	       The sed stream editor operates as a filter.  It reads
	       text from standard input	or from	the files named	on the
	       command line (chap1 in this example), modifies this
	       text, and writes	it to standard output.	Unlike most
	       editors,	it does	not replace the	original file.	This
	       makes sed a powerful command when used in pipelines.

	   2.  To use sed as a filter in a pipeline (sh	only), enter:

	       pr  chap2 | sed	"s/Page	 *[0-9]*$/(&)/"	| print



	       This encloses the page numbers in parentheses before
	       printing	chap2.	The pr command puts a heading and page
	       number at the top of each page, then sed	puts the page
	       numbers in parentheses, and the print command prints
	       the edited listing.

	       The sed pattern /Page *[0-9]*$/ matches page numbers
	       that appear at the end of a line.  The s	subcommand
	       changes this to (&), where the &	stands for the pattern
	       that was	matched	(for example, Page  5).

	   3.  To display selected lines of a file, enter:

	       sed  -n	"/food/p" chap3



	       This displays each line in chap3	that contains the word
	       food.  Normally,	sed copies every line to standard out-
	       put after it is edited.	The -n flag stops sed from
	       doing this.  You	then use subcommands like p to write
	       specific	parts of the text.  Without the	-n, this exam-
	       ple displays all	the lines in chap3, and	it shows each
	       line containing food twice.

	   4.  To perform complex editing, enter:

	       sed  -f	script.sed  chap4  >chap4.new



	       It is always a good idea	to create a sed	script file
	       when you	want to	do anything complex.  You can then
	       test and	modify your script before using	it.  You can
	       also reuse your script to edit other files.  Create the
	       script file with	an interactive text editor.

	   5.  A sample	sed script follows:

	       :join
	       /\\$/{N
	       s/\\\n//
	       b join
	       }



	       This sed	script joins each line that ends with a	\
	       (backslash) to the line that follows it.	 First,	the
	       pattern /\\$/ selects a line that ends with a \ for the
	       group of	commands enclosed in { }.  The N subcommand
	       then appends the	next line, embedding a newline
	       character.  The s/\\\n//	deletes	the \ (backslash) and
	       embedded	newline	character.  Finally, b join branches
	       back to the label :join to check	for a \	(backslash) at
	       the end of the newly joined line.  Without the branch,
	       sed writes the joined line and reads the	next one
	       before checking for a second \ character.

	       The N subcommand	causes sed to stop immediately if
	       there are no more lines of input	(that is, if N reads
	       the End-of-File character).  It does not	copy the pat-
	       tern space to standard output before stopping.  This
	       means that if the last line of the input	ends with a \
	       (backslash) character, then it is not copied to the
	       output.


     RELATED INFORMATION
	  Commands:  awk(1), grep(1)/egrep(1)/fgrep(1),
	  vi(1)/vedit(1)/view(1).

































Acknowledgement and Disclaimer