Scientific Operations



DIFF(I)                      5/15/74                      DIFF(I)



NAME
     diff - differential file comparator

SYNOPSIS
     diff [ - ] name1 name2

DESCRIPTION
     Diff  tells what lines must be changed in two files to bring
     them into agreement.  The normal output  contains  lines  of
     these forms:

          n1 a n3,n4
          n1,n2 d n3
          n1,n2 c n3,n4

     These  lines resemble ed commands to convert file name1 into
     file name2.  The numbers after the letters pertain  to  file
     name2.  In fact, by exchanging `a' for `d' and reading back-
     ward one may ascertain equally how to convert file name2 in-
     to  name1.   As in ed, identical pairs where n1 = n2 or n3 =
     n4 are abbreviated as a single number.

     Following each of these lines come all the  lines  that  are
     affected  in  the  first  file  flagged by `*', then all the
     lines that are affected in the second file flagged by `.'.

     Under the - option, the output of diff is a script of  a, c
     and d commands for the editor ed, which will change the con-
     tents of the first file into the contents of the second.  In
     this  connection, the following shell program may help main-
     tain multiple versions of a file.  Only  an  ancestral  file
     ($1)   and   a   chain   of  version-to-version  ed  scripts
     ($2,$3,...) made by diff need be on hand.   A  `latest  ver-
     sion' appears on the standard output.

          (cat $2 ... $9; echo "1,$p") | ed - $1

     Except for occasional `jackpots', diff finds a smallest suf-
     ficient set of file differences.

SEE ALSO
     cmp(I), comm(I), ed(I)

DIAGNOSTICS
     `jackpot' - To speed things up, the  program  uses  hashing.
     You  have  stumbled  on  a case where there is a chance that
     this has resulted in a difference being  called  where  none
     actually  existed.   Sometimes  reversing the order of files
     will make a jackpot go away.

BUGS
     Editing scripts produced under the - option are naive  about
     creating lines consisting of a single `.'.




                              - 1 -