subst - substitute definitions into file(s)

     subst [ -e editor ] -f substitutions victim ...

     Subst makes substitutions into files, in  a  way  that  is  suitable  for
     customizing  software  to  local conditions.  Each victim file is altered
     according to the contents of the substitutions file.

     The substitutions file  contains  one  line  per  substitution.   A  line
     consists of two fields separated by one or more tabs.  The first field is
     the name of the substitution, the second is the  value.   Neither  should
     contain the character `#', and use of text-editor metacharacters like `&'
     and `\' is also unwise; the name in particular is best restricted  to  be
     alphanumeric.  A line starting with `#' is a comment and is ignored.

     In the victims, each line on which a substitution is to be made (a target
     line) must be preceded by a prototype line.  The prototype line should be
     delimited in such a way that it will be taken as a  comment  by  whatever
     program  processes  the  file  later.   The prototype line must contain a
     ``prototype''  of  the  target  line  bracketed  by  `=()<'  and  `>()=';
     everything  else  on  the  prototype line is ignored.  Subst extracts the
     prototype, changes all instances of substitution names bracketed by  `@<'
     and  `>@'  to  their  values,  and then replaces the target line with the


     -e   Substitutions are done using the sed(1) editor, which must be  found
          in  either the /bin or /usr/bin directories.  To specify a different
          executable, use the ``-e'' flag.


     If the substitutions file is

          FIRST     111
          SECOND    222

     and the victim file is

          x = 2;
          /* =()<y = @<FIRST>@ + @<SECOND>@;>()= */
          y = 88 + 99;
          z = 5;

     then ``subst -f substitutions victim'' changes victim to:

          x = 2;
          /* =()<y = @<FIRST>@ + @<SECOND>@;>()= */
          y = 111 + 222;
          z = 5;

     victimdir/          new version being built
     victimdir/substtmp.old          old version during renaming


     Complains and halts if it is unable to create its temporary files  or  if
     they already exist.

     Written at U of Toronto by Henry Spencer.

     Rich $alz added the ``-e'' flag July, 1991.

     When creating a file to be substed, it's easy to forget to insert a dummy
     target line after a prototype line; if you forget, subst ends up deleting
     whichever line did in fact follow the prototype line.

You can find a summary and links related to this topic
as part of the Mib Software Usenet RKT.