You can use the diff3 command to look at differences between three files. Here are three sample files, repeated from Section 11.1:
test1 |
test2 |
test3 |
---|---|---|
apples |
apples |
oranges |
oranges |
oranges |
walnuts |
walnuts |
grapes |
chestnuts |
For each set of differences, diff3 displays a row of equal signs (====) followed by 1, 2, or 3, indicating which file is different; if no number is specified, then all three files differ. Then, using ed-like notation (Section 11.1), the differences are described for each file:
$ diff3 test1 test2 test3 ====3 1:1c 2:1c apples 3:0a ==== 1:3c walnuts 2:3c grapes 3:2,3c walnuts chestnuts
With the output of diff3, it is easy to keep track of which file is which; however, the prescription given is a little harder to decipher. To bring these files into agreement, the first range of text (after ====3) shows that you would have to add apples at the beginning of the third file (3:0a). The second range tells you to change line 3 of the second file to line 3 of the first file -- change lines 2 and 3 of the third file, effectively dropping the last line.
The diff3 command also has a -e option for creating an editing script for ed. It doesn't work quite the way you might think. Basically, it creates a script for building the first file from the second and third files.
$ diff3 -e test1 test2 test3 3c walnuts chestnuts . 1d . w q
If you reverse the second and third files, a different script is produced:
$ diff3 -e test1 test3 test2 3c grapes . w q
As you might guess, this is basically the same output as doing a diff on the first and third files.
-- DD
Copyright © 2003 O'Reilly & Associates. All rights reserved.