NAME

     subst - substitute definitions into file(s)


SYNOPSIS

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


DESCRIPTION

     Subst makes substitutions into files, in a way that is suit-
     able  for  customizing  software  to local conditions.  Each
     victim file is altered according to the contents of the sub-
     stitutions 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 `>()='; every-
     thing 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 result.


OPTIONS

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


EXAMPLE

     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;


FILES

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


SEE ALSO

     sed(1)


DIAGNOSTICS

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


HISTORY

     Written at U of Toronto by Henry Spencer.

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


BUGS

     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.

























Man(1) output converted with man2html