Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ed(1)									 ed(1)

NAME
       ed, red - line-oriented text editor

SYNOPSIS
       string] [file]

       string] [file]

DESCRIPTION
       The  command executes a line-oriented text editor.  It is most commonly
       used in scripts and noninteractive editing applications	because,  even
       though it can be	used interactively, other editors such as and are typ-
       ically easier to	use in an interactive environment.

       If file is specified, performs an command  (see	below)	on  the	 named
       file;  that  is	to say,	the file is read into buffer so	that it	can be
       edited.

   Options
       The following options are recognized:

	      Use	  string as the	prompt string when  in	command	 mode.
			  By default, there is no prompt string.

	      Suppress printing	of byte	counts by
			  and  commands,  and suppress the prompt after	a com-
			  mand.	 The option is obsolescent and will be removed
			  in a future release.

	      Perform an  command first	to handle an encrypted file.

   File	Handling
       operates	 on a copy of the file it is editing; changes made to the copy
       have no effect on the original file until a (write) command  is	given.
       The  copy  of  the text being edited resides in a temporary file	called
       the buffer.  There is only one buffer.

       is a restricted version of that only allows editing  of	files  in  the
       current	directory  and prohibits executing shell commands via Attempts
       to bypass these restrictions result in the error	message

       Both and	support	the fspec(4) formatting	capability.  After including a
       format  specification  as  the first line of file and invoking with the
       controlling terminal in or mode (see stty(1)), the specified tab	 stops
       are  automatically  used	when scanning file.  For example, if the first
       line of a file contained

       the tab stops would be set at columns 5,	10, and	15, and	a maximum line
       length of 72 would be imposed.

       When  you input text, expands tab characters as they are	typed to every
       eighth column as	a default.

   Editor Commands Structure
       Commands	to have	a simple and regular  structure:  zero,	 one,  or  two
       addresses  followed by a	single-character command, possibly followed by
       parameters to that command.  These addresses specify one	or more	 lines
       in  the	buffer.	  Every	 command  that	requires addresses has default
       addresses, so that the addresses	can very often be omitted.

       In general, only	one command is allowed on a line.  Append, change, and
       insert commands accept text input which is then placed in the buffer as
       appropriate.  While is accepting	text following an append,  change,  or
       insert  command,	 it is said to be in input mode.  While	in input mode,
       no editor commands are recognized; all input is merely  collected.   To
       terminate input mode, type a period alone at the	beginning of a line.

   Regular Expressions
       supports	the Basic Regular Expression (RE) syntax (see regexp(5)), with
       the following additions:

	      o	 The null RE (for  example,  is	 equivalent  to	 the  last  RE
		 encountered.

	      o	 If  the closing delimiter of an RE or of a replacement	string
		 (for example, would be	the last character before  a  newline,
		 that  delimiter  can  be omitted, in which case the addressed
		 line is printed.  The following pairs of commands are equiva-
		 lent:

		      s/s1/s2		  g/s1		   ?s1
		      s/s1/s2/p		  g/s1/p	   ?s1?

   Line	Addresses
       To understand line addressing, remember that maintains a	pointer	to the
       current line.  Generally	speaking, the current line is  the  last  line
       affected	by a command.  The exact effect	of a given command on the cur-
       rent  line  is  discussed  under	 the  description  of  each   command.
       Addresses are interpreted according to the following rules:

	      1.  The character	refers to the current line.

	      2.  The character	refers to the last line	of the buffer.

	      3.  A decimal number n refers to the nth line of the buffer.

	      4.  A  refers to the line	marked with the	mark name character x,
		  which	must be	a lower-case letter.  Lines  are  marked  with
		  the command described	below.

	      5.  An  RE enclosed by slashes ()	refers to the first line found
		  by searching forward from the	 line  following  the  current
		  line	toward the end of the buffer and stopping at the first
		  line containing a string matching the	RE.  If	necessary, the
		  search  wraps	around to the beginning	of the buffer and con-
		  tinues up to and including the current  line,	 so  that  the
		  entire buffer	is searched.  (Also see	WARNINGS below.)

	      6.  An RE	enclosed by question marks () addresses	the first line
		  found	by searching backward from the line preceding the cur-
		  rent line toward the beginning of the	buffer and stopping at
		  the first line containing a string matching the RE.  If nec-
		  essary, the search wraps around to the end of	the buffer and
		  continues up to and including	the current line.   (Also  see
		  WARNINGS below.)

	      7.  An  address  followed	 by a plus or minus sign followed by a
		  decimal number specifies that	 address  plus	or  minus  the
		  indicated number of lines.  The plus sign can	be omitted.

	      8.  If  an address begins	with or	the addition or	subtraction is
		  calculated with respect to the current line.	 For  example,
		  is interpreted as

	      9.  If  an address ends with or 1	is added to or subtracted from
		  the address, respectively.  As a  consequence	 of  this  and
		  rule	8  above, the address refers to	the line preceding the
		  current line.	 (To maintain compatibility with earlier  ver-
		  sions	 of  the  editor,  the	circumflex  and	characters are
		  interpreted  identically  when  encountered  in  addresses.)
		  Moreover, multiple trailing and characters have a cumulative
		  effect, so refers to the second line preceding  the  current
		  line.

	      10. For convenience, a comma represents the address pair while a
		  semicolon represents the pair

       Commands	require	zero, one, or two addresses.  Commands that do not use
       addresses  treat	the presence of	an address as an error.	 Commands that
       accept one or two addresses assume default addresses when the number of
       addresses  specified  is	insufficient.  If more addresses are specified
       than a given command requires, the last one or two are used  as	appro-
       priate.

       Addresses  are  usually	separated  from	each other by a	comma They can
       also be separated by a semicolon	in which case the current line is  set
       to  the	first  address,	 after which the second	address	is calculated.
       This feature can	be used	to determine the starting line for forward and
       backward	searches (see rules 5 and 6 above).  The second	address	of any
       two-address sequence must correspond to a line in the buffer that  fol-
       lows the	line corresponding to the first	address.

   Editor Commands
       In  the	following list of commands, the	default	addresses are shown in
       parentheses (parentheses	are not	part of	the address and	should not  be
       placed in an actual command except for other purposes).

       It  is generally	illegal	for more than one command to appear on a line.
       However,	any command (except or can be suffixed by or in	which case the
       current	line  is  respectively either listed, numbered,	or printed, as
       discussed below under the and commands.

		      text

		      The	     (append) command  reads  text  and
		      appends  it  after the addressed line.  Upon com-
		      pletion,	the  new  current  line	 is  the   last
		      inserted	line,  or, if no text was added, at the
		      addressed	line.  Address 0 is legal for this com-
		      mand,  causing  the appended text	to be placed at
		      the beginning of the buffer.

		      text

		      The	     (change)  command	 deletes
		      the  addressed  lines  then  accepts input
		      text to replace the deleted  lines.   Upon
		      completion,  the	new  current line is the
		      last line	in text	or, if no text was  pro-
		      vided, at	the first line after the deleted
		      line or lines.

       The	      (delete)	command	 deletes  the  addressed
		      lines  from  the buffer.	Upon completion,
		      the new current line  is	the  first  line
		      following	 the  deleted  text, or	the last
		      line in the file if the  deleted	line  or
		      lines were at the	end of the buffer.

       The	      (edit) command deletes the entire	contents
		      of the buffer, then  reads  in  the  named
		      file.   Upon  completion,	 the new current
		      line is the last line in the  buffer.   If
		      no file name is given, the remembered file
		      name, if any, is used (see  the  command).
		      The  number  of  characters  read	 is dis-
		      played, and file is remembered for  possi-
		      ble  use	as a default file name in subse-
		      quent or commands.

		      If the file name starts with the	rest  of
		      the line is interpreted as a shell command
		      whose standard output is to be read.  Such
		      a	 shell	command	is not remembered as the
		      current file name.

		      Also see DIAGNOSTICS below.

       The	      (forced  edit)  command  is  identical  to
		      except  that  no	check  is made to ensure
		      that  the	 current  buffer  has  not  been
		      altered since the	last command.

       If	      file is specified, the (file name) command
		      changes the remembered file name to  file.
		      Otherwise,  it  prints the remembered file
		      name.

       The	      (global) command first  marks  every  line
		      that  matches  the  given	 RE.   Then, for
		      every such line, the given command-list is
		      executed	with  the current line initially
		      set to that line.	 A single command or the
		      first of a list of commands appears on the
		      same line	 as  the  global  command.   All
		      lines  of	 a multiple-line list except the
		      last line	must end with  a  backslash  and
		      commands	and associated input are permit-
		      ted.  The	that normally  terminates  input
		      mode  can	 be  omitted  if it would be the
		      last line	of the command-list.   An  empty
		      command-list is equivalent to the	command.
		      The and commands are not permitted in  the
		      command-list.   (Also see	WARNINGS below.)

       The interactive
		      (Global) command first  marks  every  line
		      that  matches  the  given	 RE.   Then, for
		      every such line, the line	is printed, then
		      the  current  line is changed to that line
		      and one command  (other  than  or	 can  be
		      input  and executed.  After executing that
		      command, the next	marked line is	printed,
		      and  so on.  A newline character acts as a
		      null command, and	an causes the  re-execu-
		      tion  of	the most recent	command	executed
		      within the current invocation of Note that
		      the  commands  input as part of the execu-
		      tion of the command may address and affect
		      any  lines in the	buffer.	 The command can
		      be  terminated  by  an  interrupt	  signal
		      (ASCII DEL or BREAK).

       The	      (help) command gives a short error message
		      explaining the reason for	the most  recent
		      diagnostic.

       The	      (Help)  command  causes to enter a mode in
		      which error messages are printed	for  all
		      subsequent  diagnostics.	It also	explains
		      the previous if there was	one.   The  com-
		      mand  alternately	 turns	this mode on and
		      off.  Initially, it is off.

		      text

		      The	     (insert)	  command
		      inserts  the  given text before the
		      addressed	line.	Upon  completion,
		      the   current   line  is	the  last
		      inserted line, or,  if  there  were
		      none,  the  addressed  line.   This
		      command differs  from  the  command
		      only  in the placement of	the input
		      text.  Address 0 is not  legal  for
		      this command.

       The	      (join)   command	joins  contiguous
		      lines by removing	 the  appropriate
		      newline characters.  If exactly one
		      address is given,	this command does
		      nothing.

       The	      (mark)  command marks the	addressed
		      line with	the name x, which must be
		      a	 lower-case  letter.  The address
		      then  addresses  this  line.   Upon
		      completion,  the	new  current line
		      remains unchanged	from before.

       The	      (list) command writes the	addressed
		      lines to standard	output in a visu-
		      ally unambiguous form.   Characters
		      listed  in  the following	table are
		      written as the corresponding escape
		      sequence.	  Nonprintable characters
		      not in the table are written  as	a
		      three-digit  octal  number  (with	a
		      preceding	backslash character)  for
		      each  byte  in  the character (most
		      significant byte first).

		      Long  lines  are	folded	with  the
		      point of folding indicated by writ-
		      ing a backslash character	 followed
		      by a newline.  The end of	each line
		      is marked	with a An  (ell)  command
		      can  be  appended	 to  any  command
		      other than or The	current	line num-
		      ber  is  set  to the address of the
		      last line	written.
				     |
	Escape		       ASCII |	Escape			    ASCII
       Sequence	  Represents   Name  | Sequence	    Represents	    Name
	  \\	  backslash	 \   |	  \r	  carriage return    CR

	  \a	  alert		BEL  |	  \t	  horizontal tab     HT
	  \b	  backspace	BS   |	  \v	  vertical tab	     VT
	  \f	  formfeed	FF   |

       The	      (move)  command	repositions   the
		      addressed	  lines	 after	the  line
		      addressed	by a.  Address 0 is legal
		      for  a, causing the addressed lines
		      to be moved to the beginning of the
		      file.   It is an error if	address	a
		      falls within  the	 range	of  moved
		      lines;  Upon  completion,	 the  new
		      current  line  is	 the  last   line
		      moved.

       The	      (number)	  command    prints   the
		      addressed	 lines,	 preceding   each
		      line  by	its line number	and a tab
		      character.   Upon	 completion,  the
		      new  current  line is the	last line
		      printed.	 The   command	 can   be
		      appended	to any command other than
		      or

       The	      (print)	 command    prints    the
		      addressed	 lines.	 Upon completion,
		      the new current line  is	the  last
		      line  printed.   The command may be
		      appended to any other command other
		      than  or	For  example, deletes the
		      current line  and	 prints	 the  new
		      current line.

       The	      (prompt)	command	 causes	to prompt
		      with an asterisk (or with	string if
		      the  option  was	specified  in the
		      command line)  for  all  subsequent
		      commands.	  The command alternately
		      turns this mode on and off.  It  is
		      initially	 on  if	 the  option  was
		      specified;  otherwise,  off.    The
		      current line number is unchanged.

       The	      (quit)  command causes to	exit.  No
		      automatic	write of a file	 is  done
		      (but see DIAGNOSTICS below).

       The editor exits	unconditionally	without	checking
		      for changes in the buffer	since the
		      last command.

       The	      (read) command reads the	specified
		      file  into  the  buffer  after  the
		      addressed	line.  If no file name is
		      given, the remembered file name, if
		      any, is  used  (see  the	and  com-
		      mands).	The  remembered	file name
		      is not changed unless file  is  the
		      very   first  file  name	mentioned
		      since was	invoked.   Address  0  is
		      legal  for  and places the contents
		      of file at  the  beginning  of  the
		      buffer.  If the read is successful,
		      the number of  characters	 read  is
		      displayed.   Upon	 completion,  the
		      new current line is the  last  line
		      read  into the buffer.  If the file
		      name starts with the  rest  of  the
		      line is interpreted as a shell com-
		      mand whose standard output is to be
		      read.  For example, appends a list-
		      ing of files in the current  direc-
		      tory  to	the end	of the file being
		      edited.  A  shell	 command  is  not
		      remembered   as  the  current  file
		      name.

       The	      (substitute) command searches  each
		      addressed	line for an occurrence of
		      the specified RE.	 In each line  in
		      which   a	  match	  is  found,  all
		      (nonoverlapped) matched strings are
		      replaced	 by  replacement  if  the
		      global	replacement	indicator
		      appears  after the command.  If the
		      global indicator does  not  appear,
		      only  the	 first	occurrence of the
		      matched string is	replaced.   If	a
		      number n appears after the command,
		      only  the	 nth  occurrence  of  the
		      matched  string  on  each	addressed
		      line is replaced.	 It is	an  error
		      for the substitution to fail on all
		      addressed	 lines.	  Any	character
		      other  than space	or newline can be
		      used instead of to delimit  the  RE
		      and  replacement.	 Upon completion,
		      the new current line  is	the  last
		      line   on	  which	  a  substitution
		      occurred.	   (Also   see	 WARNINGS
		      below.)

		      If an ampersand appears in replace-
		      ment, it is replaced by the  string
		      matching	the  RE	 on  the  current
		      line.  The special  meaning  of  in
		      this  context  can be suppressed by
		      preceding	it with

		      As  a  more  general  feature,  the
		      characters  where	n is a digit, are
		      replaced by the text matched by the
		      nth  regular  subexpression  of the
		      specified	RE enclosed  between  and
		      When  nested  parenthesized  subex-
		      pressions	are present, n is  deter-
		      mined  by	 counting  occurrences of
		      starting from the	left.

		      When  the	 character  is	the  only
		      character	  in   replacement,   the
		      replacement used in the most recent
		      substitute  command  is used as the
		      replacement in the current  substi-
		      tute  command.   The loses its spe-
		      cial  meaning  when  it  is  in	a
		      replacement  string containing more
		      than one character or when preceded
		      by a

		      A	line can be split by substituting
		      a	newline	character into	it.   The
		      newline	in  replacement	 must  be
		      escaped by  preceding  it	 by  Such
		      substitution cannot be done as part
		      of a or command list.

		      The value	of flags is zero or  more
		      of:

			   n	  Substitute  for the nth
				  occurrence only of  the
				  RE	found	on   each
				  addressed line.

			   Substitute  for  all	 nonover-
			   lapped occurrences of the RE
				  on each addressed line.

			   Write  to  standard output the
			   final line
				  in which a substitution
				  was made.  The line  is
				  written  in  the format
				  specified for	the  com-
				  mand.

			   Write  to  standard output the
			   final line
				  in which a substitution
				  was made.  The line  is
				  written  in  the format
				  specified for	the  com-
				  mand.

			   Write  to  standard output the
			   final line
				  in which a substitution
				  was made.  The line  is
				  written  in  the format
				  specified for	the  com-
				  mand.

       Same as	      command,	except that a copy of the
		      addressed	 lines	is  placed  after
		      address  a  (which can be	0).  Upon
		      completion, the new current line is
		      the last line of the copy.

       The	      (undo) command nullifies the effect
		      of the  most  recent  command  that
		      modified	anything  in  the buffer,
		      that is, the most	 recent	 or  com-
		      mand.   All  changes  made  to  the
		      buffer by	a or global  command  are
		      "undone"	as a single change; if no
		      changes were  made  by  the  global
		      command  (such  as with ), the com-
		      mand has no  effect.   The  current
		      line  number is set to the value it
		      had immediately before the  command
		      started.

       The complement of the global command
		      in that the lines	marked during the
		      first step are those that	do  match
		      the RE.

       The complement of the interactive global	command
		      in that the lines	marked during the
		      first step are those that	do  match
		      the RE.

       The	      (write)	 command    writes    the
		      addressed	 lines	into  the   named
		      file.   If the file does not exist,
		      it is created with mode 666  (read-
		      able  and	 writable  by  everyone),
		      unless the current setting dictates
		      otherwise	  (see	 umask(1).    The
		      remembered file name is not changed
		      unless  file is the very first file
		      name encountered since was invoked.
		      If  no  file  name  is  given,  the
		      remembered file name,  if	 any,  is
		      used  (see the and commands).  Upon
		      completion,   the	  current    line
		      address  is unchanged.  If the com-
		      mand is successful, the  number  of
		      characters written is displayed.

		      If  the  file  name starts with the
		      rest of the line is interpreted  as
		      a	  shell	 command  whose	 standard
		      input is the addressed lines.  Such
		      a	 shell	command	is not remembered
		      as the current file name.

       A key string is demanded	from the standard  input.
		      Subsequent   and	 commands    will
		      encrypt  and  decrypt the	text with
		      this key,	using  the  algorithm  of
		      crypt(1).	  An explicitly	empty key
		      turns off	encryption.

       The line	number of  the	addressed  line	 is  dis-
       played.
		      The   current   line   address   is
		      unchanged	by this	command.

       The remainder of	the line after the
		      is  sent	to the shell to	be inter-
		      preted and executed as  a	 command.
		      Within  the  text	 of that command,
		      the unescaped character is replaced
		      with  the	remembered file	name.  If
		      a	appears	as the first character of
		      the  shell  command, it is replaced
		      with the text of the previous shell
		      command.	 Thus,	repeats	 the last
		      shell command.  If any expansion is
		      performed,  the  expanded	 line  is
		      echoed.  Upon completion,	the  cur-
		      rent line	address	is unchanged.

       An  address  alone  on a	line causes the	addressed
       line to be printed.
		      A	 newline  alone	 is equivalent to
		      This technique is	useful for  step-
		      ping forward through the buffer.

       If  an  interrupt  signal  (ASCII DEL or	BREAK) is
       sent, prints a and returns to its command level.

       The following size limitations apply: 256  charac-
       ters  per  global  command list,	64 characters per
       file name, and 32 MB  characters	 in  the  buffer.
       The  limit  on  the number of lines depends on the
       amount of user memory: each line	takes 1	word.

EXTERNAL INFLUENCES
   Environment Variables
       determines the preferred	command-line  interpreter
       for use in all commands.	 If this variable is null
       or not set, the POSIX  shell,  is  used	(see  sh-
       posix(1)).

       When  set,  specifies  a	 directory to be used for
       temporary files,	overriding the default directory,

       provides	 a default value for internationalization
       variables that are unset	or null.  If is	unset  or
       null,  the default value	is "C" (see lang(5)).  If
       any  internationalization  variable  contains   an
       invalid	setting,  all  internationalization vari-
       ables default to	"C".  See environ(5).

       If is set to a nonempty string value, it	overrides
       the  values  of all the other internationalization
       variables, including

       determines the interpretation of	text  as  single-
       and/or multibyte	characters, the	classification of
       characters  as  printable,  and	 the   characters
       matched	by character class expressions in regular
       expressions.

       determines the  locale  that  should  be	 used  to
       affect  the format and contents of diagnostic mes-
       sages written to	standard  error	 and  informative
       messages	written	to standard output.

       determines  the location	of message catalogues for
       the processing of

   International Code Set Support
       Single- and multibyte character code sets are sup-
       ported.

DIAGNOSTICS
	      Command error.
		      Use  or  to get a	detailed explana-
		      tion.

	      Inaccessible file.
		      Use or to	get a  detailed	 explana-
		      tion.

       If  changes have	been made in the buffer	since the
       last command that wrote the entire  buffer,  warns
       you  if	you attempt to destroy the buffer with an
       or command.  displays  or  then	continues  normal
       editing	unless	you enter a second or command, in
       which case the second command is	executed.  The or
       command-line option inhibits this feature.

EXAMPLES
       Make a simple substitution in from a shell script,
       changing	the first occurrence of	in  any	 line  to
       and save	the changes in

       Note  that,  if	a command fails, the editor exits
       immediately.

WARNINGS
       A command cannot	be subject to a	or a command.

       The command and the escape from the  and	 commands
       cannot be used if the the editor	is invoked from	a
       restricted shell	(see sh(1)).

       The sequence in	a  regular  expression	does  not
       match a newline character.

       The command does	not handle DEL correctly.

       Files encrypted directly	with the command with the
       null key	cannot be edited (see crypt(1)).

       If the editor input is coming from a command  file
       (e.g.,  the editor exits	at the first failure of	a
       command in the command file.

       When reading a file, discards ASCII NUL characters
       and  all	 characters after the last newline.  This
       can cause unexpected behavior when  using  regular
       expressions to search for character sequences con-
       taining NUL characters or text near end-of-file.

AUTHOR
       was developed by	HP and OSF.

FILES
       Temporary buffer	file where
		      p	is the process number.
       Work is saved here if the terminal is hung up.

SEE ALSO
       awk(1), csh(1), crypt(1), ex(1),	grep(1),  ksh(1),
       sed(1),	 sh(1),	  sh-posix(1),	 stty(1),  vi(1),
       fspec(4), environ(5), lang(5), regexp(5).

       The section in

STANDARDS CONFORMANCE
									 ed(1)

NAME | SYNOPSIS | DESCRIPTION | EXTERNAL INFLUENCES | DIAGNOSTICS | EXAMPLES | WARNINGS | AUTHOR | FILES | SEE ALSO | STANDARDS CONFORMANCE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ed&sektion=1&manpath=HP-UX+11.22>

home | help