1*d8634badSDavid van Moolenbroek.\" $OpenBSD: diff.1,v 1.37 2010/02/21 15:24:01 sobrado Exp $ 2*d8634badSDavid van Moolenbroek.\" 3*d8634badSDavid van Moolenbroek.\" Copyright (c) 1980, 1990, 1993 4*d8634badSDavid van Moolenbroek.\" The Regents of the University of California. All rights reserved. 5*d8634badSDavid van Moolenbroek.\" 6*d8634badSDavid van Moolenbroek.\" Redistribution and use in source and binary forms, with or without 7*d8634badSDavid van Moolenbroek.\" modification, are permitted provided that the following conditions 8*d8634badSDavid van Moolenbroek.\" are met: 9*d8634badSDavid van Moolenbroek.\" 1. Redistributions of source code must retain the above copyright 10*d8634badSDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer. 11*d8634badSDavid van Moolenbroek.\" 2. Redistributions in binary form must reproduce the above copyright 12*d8634badSDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer in the 13*d8634badSDavid van Moolenbroek.\" documentation and/or other materials provided with the distribution. 14*d8634badSDavid van Moolenbroek.\" 3. Neither the name of the University nor the names of its contributors 15*d8634badSDavid van Moolenbroek.\" may be used to endorse or promote products derived from this software 16*d8634badSDavid van Moolenbroek.\" without specific prior written permission. 17*d8634badSDavid van Moolenbroek.\" 18*d8634badSDavid van Moolenbroek.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19*d8634badSDavid van Moolenbroek.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20*d8634badSDavid van Moolenbroek.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21*d8634badSDavid van Moolenbroek.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22*d8634badSDavid van Moolenbroek.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23*d8634badSDavid van Moolenbroek.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24*d8634badSDavid van Moolenbroek.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25*d8634badSDavid van Moolenbroek.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26*d8634badSDavid van Moolenbroek.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27*d8634badSDavid van Moolenbroek.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28*d8634badSDavid van Moolenbroek.\" SUCH DAMAGE. 29*d8634badSDavid van Moolenbroek.\" 30*d8634badSDavid van Moolenbroek.\" @(#)diff.1 8.1 (Berkeley) 6/30/93 31*d8634badSDavid van Moolenbroek.\" 32*d8634badSDavid van Moolenbroek.Dd $Mdocdate: February 21 2010 $ 33*d8634badSDavid van Moolenbroek.Dt DIFF 1 34*d8634badSDavid van Moolenbroek.Os 35*d8634badSDavid van Moolenbroek.Sh NAME 36*d8634badSDavid van Moolenbroek.Nm diff 37*d8634badSDavid van Moolenbroek.Nd differential file and directory comparator 38*d8634badSDavid van Moolenbroek.Sh SYNOPSIS 39*d8634badSDavid van Moolenbroek.Nm diff 40*d8634badSDavid van Moolenbroek.Op Fl abdilpTtw 41*d8634badSDavid van Moolenbroek.Oo 42*d8634badSDavid van Moolenbroek.Fl c | e | f | 43*d8634badSDavid van Moolenbroek.Fl n | q | u 44*d8634badSDavid van Moolenbroek.Oc 45*d8634badSDavid van Moolenbroek.Op Fl I Ar pattern 46*d8634badSDavid van Moolenbroek.Op Fl L Ar label 47*d8634badSDavid van Moolenbroek.Ar file1 file2 48*d8634badSDavid van Moolenbroek.Nm diff 49*d8634badSDavid van Moolenbroek.Op Fl abdilpTtw 50*d8634badSDavid van Moolenbroek.Op Fl I Ar pattern 51*d8634badSDavid van Moolenbroek.Op Fl L Ar label 52*d8634badSDavid van Moolenbroek.Fl C Ar number 53*d8634badSDavid van Moolenbroek.Ar file1 file2 54*d8634badSDavid van Moolenbroek.Nm diff 55*d8634badSDavid van Moolenbroek.Op Fl abdiltw 56*d8634badSDavid van Moolenbroek.Op Fl I Ar pattern 57*d8634badSDavid van Moolenbroek.Fl D Ar string 58*d8634badSDavid van Moolenbroek.Ar file1 file2 59*d8634badSDavid van Moolenbroek.Nm diff 60*d8634badSDavid van Moolenbroek.Op Fl abdilpTtw 61*d8634badSDavid van Moolenbroek.Op Fl I Ar pattern 62*d8634badSDavid van Moolenbroek.Op Fl L Ar label 63*d8634badSDavid van Moolenbroek.Fl U Ar number 64*d8634badSDavid van Moolenbroek.Ar file1 file2 65*d8634badSDavid van Moolenbroek.Nm diff 66*d8634badSDavid van Moolenbroek.Op Fl abdilNPprsTtw 67*d8634badSDavid van Moolenbroek.Oo 68*d8634badSDavid van Moolenbroek.Fl c | e | f | 69*d8634badSDavid van Moolenbroek.Fl n | q | u 70*d8634badSDavid van Moolenbroek.Oc 71*d8634badSDavid van Moolenbroek.Op Fl I Ar pattern 72*d8634badSDavid van Moolenbroek.Bk -words 73*d8634badSDavid van Moolenbroek.Op Fl L Ar label 74*d8634badSDavid van Moolenbroek.Op Fl S Ar name 75*d8634badSDavid van Moolenbroek.Op Fl X Ar file 76*d8634badSDavid van Moolenbroek.Op Fl x Ar pattern 77*d8634badSDavid van Moolenbroek.Ek 78*d8634badSDavid van Moolenbroek.Ar dir1 dir2 79*d8634badSDavid van Moolenbroek.Sh DESCRIPTION 80*d8634badSDavid van MoolenbroekThe 81*d8634badSDavid van Moolenbroek.Nm 82*d8634badSDavid van Moolenbroekutility compares the contents of 83*d8634badSDavid van Moolenbroek.Ar file1 84*d8634badSDavid van Moolenbroekand 85*d8634badSDavid van Moolenbroek.Ar file2 86*d8634badSDavid van Moolenbroekand writes to the standard output the list of changes necessary to 87*d8634badSDavid van Moolenbroekconvert one file into the other. 88*d8634badSDavid van MoolenbroekNo output is produced if the files are identical. 89*d8634badSDavid van Moolenbroek.Pp 90*d8634badSDavid van MoolenbroekOutput options (mutually exclusive): 91*d8634badSDavid van Moolenbroek.Bl -tag -width Ds 92*d8634badSDavid van Moolenbroek.It Fl C Ar number 93*d8634badSDavid van MoolenbroekLike 94*d8634badSDavid van Moolenbroek.Fl c 95*d8634badSDavid van Moolenbroekbut produces a diff with 96*d8634badSDavid van Moolenbroek.Ar number 97*d8634badSDavid van Moolenbroeklines of context. 98*d8634badSDavid van Moolenbroek.It Fl c 99*d8634badSDavid van MoolenbroekProduces a diff with 3 lines of context. 100*d8634badSDavid van MoolenbroekWith 101*d8634badSDavid van Moolenbroek.Fl c 102*d8634badSDavid van Moolenbroekthe output format is modified slightly: 103*d8634badSDavid van Moolenbroekthe output begins with identification of the files involved and 104*d8634badSDavid van Moolenbroektheir creation dates and then each change is separated 105*d8634badSDavid van Moolenbroekby a line with fifteen 106*d8634badSDavid van Moolenbroek.Li * Ns 's . 107*d8634badSDavid van MoolenbroekThe lines removed from 108*d8634badSDavid van Moolenbroek.Ar file1 109*d8634badSDavid van Moolenbroekare marked with 110*d8634badSDavid van Moolenbroek.Sq \&-\ \& ; 111*d8634badSDavid van Moolenbroekthose added to 112*d8634badSDavid van Moolenbroek.Ar file2 113*d8634badSDavid van Moolenbroekare marked 114*d8634badSDavid van Moolenbroek.Sq \+\ \& . 115*d8634badSDavid van MoolenbroekLines which are changed from one file to the other are marked in 116*d8634badSDavid van Moolenbroekboth files with 117*d8634badSDavid van Moolenbroek.Sq !\ \& . 118*d8634badSDavid van MoolenbroekChanges which lie within 3 lines of each other are grouped together on 119*d8634badSDavid van Moolenbroekoutput. 120*d8634badSDavid van Moolenbroek.It Fl D Ar string 121*d8634badSDavid van MoolenbroekCreates a merged version of 122*d8634badSDavid van Moolenbroek.Ar file1 123*d8634badSDavid van Moolenbroekand 124*d8634badSDavid van Moolenbroek.Ar file2 125*d8634badSDavid van Moolenbroekon the standard output, with C preprocessor controls included so that 126*d8634badSDavid van Moolenbroeka compilation of the result without defining 127*d8634badSDavid van Moolenbroek.Ar string 128*d8634badSDavid van Moolenbroekis equivalent to compiling 129*d8634badSDavid van Moolenbroek.Ar file1 , 130*d8634badSDavid van Moolenbroekwhile defining 131*d8634badSDavid van Moolenbroek.Ar string 132*d8634badSDavid van Moolenbroekwill yield 133*d8634badSDavid van Moolenbroek.Ar file2 . 134*d8634badSDavid van Moolenbroek.It Fl e 135*d8634badSDavid van MoolenbroekProduces output in a form suitable as input for the editor utility, 136*d8634badSDavid van Moolenbroek.Xr ed 1 , 137*d8634badSDavid van Moolenbroekwhich can then be used to convert file1 into file2. 138*d8634badSDavid van Moolenbroek.Pp 139*d8634badSDavid van MoolenbroekExtra commands are added to the output when comparing directories with 140*d8634badSDavid van Moolenbroek.Fl e , 141*d8634badSDavid van Moolenbroekso that the result is a 142*d8634badSDavid van Moolenbroek.Xr sh 1 143*d8634badSDavid van Moolenbroekscript for converting text files which are common to the two directories 144*d8634badSDavid van Moolenbroekfrom their state in 145*d8634badSDavid van Moolenbroek.Ar dir1 146*d8634badSDavid van Moolenbroekto their state in 147*d8634badSDavid van Moolenbroek.Ar dir2 . 148*d8634badSDavid van Moolenbroek.It Fl f 149*d8634badSDavid van MoolenbroekIdentical output to that of the 150*d8634badSDavid van Moolenbroek.Fl e 151*d8634badSDavid van Moolenbroekflag, but in reverse order. 152*d8634badSDavid van MoolenbroekIt cannot be digested by 153*d8634badSDavid van Moolenbroek.Xr ed 1 . 154*d8634badSDavid van Moolenbroek.It Fl n 155*d8634badSDavid van MoolenbroekProduces a script similar to that of 156*d8634badSDavid van Moolenbroek.Fl e , 157*d8634badSDavid van Moolenbroekbut in the opposite order and with a count of changed lines on each 158*d8634badSDavid van Moolenbroekinsert or delete command. 159*d8634badSDavid van MoolenbroekThis is the form used by 160*d8634badSDavid van Moolenbroek.Xr rcsdiff 1 . 161*d8634badSDavid van Moolenbroek.It Fl q 162*d8634badSDavid van MoolenbroekJust print a line when the files differ. 163*d8634badSDavid van MoolenbroekDoes not output a list of changes. 164*d8634badSDavid van Moolenbroek.It Fl U Ar number 165*d8634badSDavid van MoolenbroekLike 166*d8634badSDavid van Moolenbroek.Fl u 167*d8634badSDavid van Moolenbroekbut produces a diff with 168*d8634badSDavid van Moolenbroek.Ar number 169*d8634badSDavid van Moolenbroeklines of context. 170*d8634badSDavid van Moolenbroek.It Fl u 171*d8634badSDavid van MoolenbroekProduces a 172*d8634badSDavid van Moolenbroek.Em unified 173*d8634badSDavid van Moolenbroekdiff with 3 lines of context. 174*d8634badSDavid van MoolenbroekA unified diff is similar to the context diff produced by the 175*d8634badSDavid van Moolenbroek.Fl c 176*d8634badSDavid van Moolenbroekoption. 177*d8634badSDavid van MoolenbroekHowever, unlike with 178*d8634badSDavid van Moolenbroek.Fl c , 179*d8634badSDavid van Moolenbroekall lines to be changed (added and/or removed) are present in 180*d8634badSDavid van Moolenbroeka single section. 181*d8634badSDavid van Moolenbroek.El 182*d8634badSDavid van Moolenbroek.Pp 183*d8634badSDavid van MoolenbroekComparison options: 184*d8634badSDavid van Moolenbroek.Bl -tag -width Ds 185*d8634badSDavid van Moolenbroek.It Fl a 186*d8634badSDavid van MoolenbroekTreat all files as 187*d8634badSDavid van Moolenbroek.Tn ASCII 188*d8634badSDavid van Moolenbroektext. 189*d8634badSDavid van MoolenbroekNormally 190*d8634badSDavid van Moolenbroek.Nm 191*d8634badSDavid van Moolenbroekwill simply print 192*d8634badSDavid van Moolenbroek.Dq Binary files ... differ 193*d8634badSDavid van Moolenbroekif files contain binary characters. 194*d8634badSDavid van MoolenbroekUse of this option forces 195*d8634badSDavid van Moolenbroek.Nm 196*d8634badSDavid van Moolenbroekto produce a diff. 197*d8634badSDavid van Moolenbroek.It Fl b 198*d8634badSDavid van MoolenbroekCauses trailing blanks (spaces and tabs) to be ignored, and other 199*d8634badSDavid van Moolenbroekstrings of blanks to compare equal. 200*d8634badSDavid van Moolenbroek.It Fl d 201*d8634badSDavid van MoolenbroekTry very hard to produce a diff as small as possible. 202*d8634badSDavid van MoolenbroekThis may consume a lot of processing power and memory when processing 203*d8634badSDavid van Moolenbroeklarge files with many changes. 204*d8634badSDavid van Moolenbroek.It Fl I Ar pattern 205*d8634badSDavid van MoolenbroekIgnores changes, insertions, and deletions whose lines match the 206*d8634badSDavid van Moolenbroekextended regular expression 207*d8634badSDavid van Moolenbroek.Ar pattern . 208*d8634badSDavid van MoolenbroekMultiple 209*d8634badSDavid van Moolenbroek.Fl I 210*d8634badSDavid van Moolenbroekpatterns may be specified. 211*d8634badSDavid van MoolenbroekAll lines in the change must match some pattern for the change to be 212*d8634badSDavid van Moolenbroekignored. 213*d8634badSDavid van MoolenbroekSee 214*d8634badSDavid van Moolenbroek.Xr re_format 7 215*d8634badSDavid van Moolenbroekfor more information on regular expression patterns. 216*d8634badSDavid van Moolenbroek.It Fl i 217*d8634badSDavid van MoolenbroekIgnores the case of letters. 218*d8634badSDavid van MoolenbroekE.g., 219*d8634badSDavid van Moolenbroek.Dq A 220*d8634badSDavid van Moolenbroekwill compare equal to 221*d8634badSDavid van Moolenbroek.Dq a . 222*d8634badSDavid van Moolenbroek.It Fl L Ar label 223*d8634badSDavid van MoolenbroekPrint 224*d8634badSDavid van Moolenbroek.Ar label 225*d8634badSDavid van Moolenbroekinstead of the first (and second, if this option is specified twice) 226*d8634badSDavid van Moolenbroekfile name and time in the context or unified diff header. 227*d8634badSDavid van Moolenbroek.It Fl l 228*d8634badSDavid van MoolenbroekLong output format; each text file 229*d8634badSDavid van Moolenbroek.Nm diff Ns \'d 230*d8634badSDavid van Moolenbroekis piped through 231*d8634badSDavid van Moolenbroek.Xr pr 1 232*d8634badSDavid van Moolenbroekto paginate it; 233*d8634badSDavid van Moolenbroekother differences are remembered and summarized 234*d8634badSDavid van Moolenbroekafter all text file differences are reported. 235*d8634badSDavid van Moolenbroek.It Fl p 236*d8634badSDavid van MoolenbroekWith unified and context diffs, show with each change 237*d8634badSDavid van Moolenbroekthe first 40 characters of the last line before the context beginning 238*d8634badSDavid van Moolenbroekwith a letter, an underscore or a dollar sign. 239*d8634badSDavid van MoolenbroekFor C source code following standard layout conventions, this will 240*d8634badSDavid van Moolenbroekshow the prototype of the function the change applies to. 241*d8634badSDavid van Moolenbroek.It Fl T 242*d8634badSDavid van MoolenbroekPrint a tab rather than a space before the rest of the line for the 243*d8634badSDavid van Moolenbroeknormal, context or unified output formats. 244*d8634badSDavid van MoolenbroekThis makes the alignment of tabs in the line consistent. 245*d8634badSDavid van Moolenbroek.It Fl t 246*d8634badSDavid van MoolenbroekWill expand tabs in output lines. 247*d8634badSDavid van MoolenbroekNormal or 248*d8634badSDavid van Moolenbroek.Fl c 249*d8634badSDavid van Moolenbroekoutput adds character(s) to the front of each line which may screw up 250*d8634badSDavid van Moolenbroekthe indentation of the original source lines and make the output listing 251*d8634badSDavid van Moolenbroekdifficult to interpret. 252*d8634badSDavid van MoolenbroekThis option will preserve the original source's indentation. 253*d8634badSDavid van Moolenbroek.It Fl w 254*d8634badSDavid van MoolenbroekIs similar to 255*d8634badSDavid van Moolenbroek.Fl b 256*d8634badSDavid van Moolenbroekbut causes whitespace (blanks and tabs) to be totally ignored. 257*d8634badSDavid van MoolenbroekE.g., 258*d8634badSDavid van Moolenbroek.Dq if (\ \&a == b \&) 259*d8634badSDavid van Moolenbroekwill compare equal to 260*d8634badSDavid van Moolenbroek.Dq if(a==b) . 261*d8634badSDavid van Moolenbroek.El 262*d8634badSDavid van Moolenbroek.Pp 263*d8634badSDavid van MoolenbroekDirectory comparison options: 264*d8634badSDavid van Moolenbroek.Bl -tag -width Ds 265*d8634badSDavid van Moolenbroek.It Fl N 266*d8634badSDavid van MoolenbroekIf a file is found in only one directory, act as if it was found in the 267*d8634badSDavid van Moolenbroekother directory too but was of zero size. 268*d8634badSDavid van Moolenbroek.It Fl P 269*d8634badSDavid van MoolenbroekIf a file is found only in 270*d8634badSDavid van Moolenbroek.Ar dir2 , 271*d8634badSDavid van Moolenbroekact as if it was found in 272*d8634badSDavid van Moolenbroek.Ar dir1 273*d8634badSDavid van Moolenbroektoo but was of zero size. 274*d8634badSDavid van Moolenbroek.It Fl r 275*d8634badSDavid van MoolenbroekCauses application of 276*d8634badSDavid van Moolenbroek.Nm 277*d8634badSDavid van Moolenbroekrecursively to common subdirectories encountered. 278*d8634badSDavid van Moolenbroek.It Fl S Ar name 279*d8634badSDavid van MoolenbroekRe-starts a directory 280*d8634badSDavid van Moolenbroek.Nm 281*d8634badSDavid van Moolenbroekin the middle, beginning with file 282*d8634badSDavid van Moolenbroek.Ar name . 283*d8634badSDavid van Moolenbroek.It Fl s 284*d8634badSDavid van MoolenbroekCauses 285*d8634badSDavid van Moolenbroek.Nm 286*d8634badSDavid van Moolenbroekto report files which are the same, which are otherwise not mentioned. 287*d8634badSDavid van Moolenbroek.It Fl X Ar file 288*d8634badSDavid van MoolenbroekExclude files and subdirectories from comparison whose basenames match 289*d8634badSDavid van Moolenbroeklines in 290*d8634badSDavid van Moolenbroek.Ar file . 291*d8634badSDavid van MoolenbroekMultiple 292*d8634badSDavid van Moolenbroek.Fl X 293*d8634badSDavid van Moolenbroekoptions may be specified. 294*d8634badSDavid van Moolenbroek.It Fl x Ar pattern 295*d8634badSDavid van MoolenbroekExclude files and subdirectories from comparison whose basenames match 296*d8634badSDavid van Moolenbroek.Ar pattern . 297*d8634badSDavid van MoolenbroekPatterns are matched using shell-style globbing via 298*d8634badSDavid van Moolenbroek.Xr fnmatch 3 . 299*d8634badSDavid van MoolenbroekMultiple 300*d8634badSDavid van Moolenbroek.Fl x 301*d8634badSDavid van Moolenbroekoptions may be specified. 302*d8634badSDavid van Moolenbroek.El 303*d8634badSDavid van Moolenbroek.Pp 304*d8634badSDavid van MoolenbroekIf both arguments are directories, 305*d8634badSDavid van Moolenbroek.Nm 306*d8634badSDavid van Moolenbroeksorts the contents of the directories by name, and then runs the 307*d8634badSDavid van Moolenbroekregular file 308*d8634badSDavid van Moolenbroek.Nm 309*d8634badSDavid van Moolenbroekalgorithm, producing a change list, 310*d8634badSDavid van Moolenbroekon text files which are different. 311*d8634badSDavid van MoolenbroekBinary files which differ, 312*d8634badSDavid van Moolenbroekcommon subdirectories, and files which appear in only one directory 313*d8634badSDavid van Moolenbroekare described as such. 314*d8634badSDavid van MoolenbroekIn directory mode only regular files and directories are compared. 315*d8634badSDavid van MoolenbroekIf a non-regular file such as a device special file or 316*d8634badSDavid van Moolenbroek.Tn FIFO 317*d8634badSDavid van Moolenbroekis encountered, a diagnostic message is printed. 318*d8634badSDavid van Moolenbroek.Pp 319*d8634badSDavid van MoolenbroekIf only one of 320*d8634badSDavid van Moolenbroek.Ar file1 321*d8634badSDavid van Moolenbroekand 322*d8634badSDavid van Moolenbroek.Ar file2 323*d8634badSDavid van Moolenbroekis a directory, 324*d8634badSDavid van Moolenbroek.Nm 325*d8634badSDavid van Moolenbroekis applied to the non-directory file and the file contained in 326*d8634badSDavid van Moolenbroekthe directory file with a filename that is the same as the 327*d8634badSDavid van Moolenbroeklast component of the non-directory file. 328*d8634badSDavid van Moolenbroek.Pp 329*d8634badSDavid van MoolenbroekIf either 330*d8634badSDavid van Moolenbroek.Ar file1 331*d8634badSDavid van Moolenbroekor 332*d8634badSDavid van Moolenbroek.Ar file2 333*d8634badSDavid van Moolenbroekis 334*d8634badSDavid van Moolenbroek.Sq Fl , 335*d8634badSDavid van Moolenbroekthe standard input is 336*d8634badSDavid van Moolenbroekused in its place. 337*d8634badSDavid van Moolenbroek.Ss Output Style 338*d8634badSDavid van MoolenbroekThe default (without 339*d8634badSDavid van Moolenbroek.Fl e , 340*d8634badSDavid van Moolenbroek.Fl c , 341*d8634badSDavid van Moolenbroekor 342*d8634badSDavid van Moolenbroek.Fl n 343*d8634badSDavid van Moolenbroek.\" -C 344*d8634badSDavid van Moolenbroekoptions) 345*d8634badSDavid van Moolenbroekoutput contains lines of these forms, where 346*d8634badSDavid van Moolenbroek.Va XX , YY , ZZ , QQ 347*d8634badSDavid van Moolenbroekare line numbers respective of file order. 348*d8634badSDavid van Moolenbroek.Pp 349*d8634badSDavid van Moolenbroek.Bl -tag -width "XX,YYcZZ,QQ" -compact 350*d8634badSDavid van Moolenbroek.It Li XX Ns Ic a Ns Li YY 351*d8634badSDavid van MoolenbroekAt (the end of) line 352*d8634badSDavid van Moolenbroek.Va XX 353*d8634badSDavid van Moolenbroekof 354*d8634badSDavid van Moolenbroek.Ar file1 , 355*d8634badSDavid van Moolenbroekappend the contents 356*d8634badSDavid van Moolenbroekof line 357*d8634badSDavid van Moolenbroek.Va YY 358*d8634badSDavid van Moolenbroekof 359*d8634badSDavid van Moolenbroek.Ar file2 360*d8634badSDavid van Moolenbroekto make them equal. 361*d8634badSDavid van Moolenbroek.It Li XX Ns Ic a Ns Li YY,ZZ 362*d8634badSDavid van MoolenbroekSame as above, but append the range of lines, 363*d8634badSDavid van Moolenbroek.Va YY 364*d8634badSDavid van Moolenbroekthrough 365*d8634badSDavid van Moolenbroek.Va ZZ 366*d8634badSDavid van Moolenbroekof 367*d8634badSDavid van Moolenbroek.Ar file2 368*d8634badSDavid van Moolenbroekto line 369*d8634badSDavid van Moolenbroek.Va XX 370*d8634badSDavid van Moolenbroekof file1. 371*d8634badSDavid van Moolenbroek.It Li XX Ns Ic d Ns Li YY 372*d8634badSDavid van MoolenbroekAt line 373*d8634badSDavid van Moolenbroek.Va XX 374*d8634badSDavid van Moolenbroekdelete 375*d8634badSDavid van Moolenbroekthe line. 376*d8634badSDavid van MoolenbroekThe value 377*d8634badSDavid van Moolenbroek.Va YY 378*d8634badSDavid van Moolenbroektells to which line the change would bring 379*d8634badSDavid van Moolenbroek.Ar file1 380*d8634badSDavid van Moolenbroekin line with 381*d8634badSDavid van Moolenbroek.Ar file1 . 382*d8634badSDavid van Moolenbroek.It Li XX,YY Ns Ic d Ns Li ZZ 383*d8634badSDavid van MoolenbroekDelete the range of lines 384*d8634badSDavid van Moolenbroek.Va XX 385*d8634badSDavid van Moolenbroekthrough 386*d8634badSDavid van Moolenbroek.Va YY 387*d8634badSDavid van Moolenbroekin 388*d8634badSDavid van Moolenbroek.Ar file1 . 389*d8634badSDavid van Moolenbroek.It Li XX Ns Ic c Ns Li YY 390*d8634badSDavid van MoolenbroekChange the line 391*d8634badSDavid van Moolenbroek.Va XX 392*d8634badSDavid van Moolenbroekin 393*d8634badSDavid van Moolenbroek.Ar file1 394*d8634badSDavid van Moolenbroekto the line 395*d8634badSDavid van Moolenbroek.Va YY 396*d8634badSDavid van Moolenbroekin 397*d8634badSDavid van Moolenbroek.Ar file2 . 398*d8634badSDavid van Moolenbroek.It Li XX,YY Ns Ic c Ns Li ZZ 399*d8634badSDavid van MoolenbroekReplace the range of specified lines with the line 400*d8634badSDavid van Moolenbroek.Va ZZ . 401*d8634badSDavid van Moolenbroek.It Li XX,YY Ns Ic c Ns Li ZZ,QQ 402*d8634badSDavid van MoolenbroekReplace the range 403*d8634badSDavid van Moolenbroek.Va XX , Ns Va YY 404*d8634badSDavid van Moolenbroekfrom 405*d8634badSDavid van Moolenbroek.Ar file1 406*d8634badSDavid van Moolenbroekwith the range 407*d8634badSDavid van Moolenbroek.Va ZZ , Ns Va QQ 408*d8634badSDavid van Moolenbroekfrom 409*d8634badSDavid van Moolenbroek.Ar file2 . 410*d8634badSDavid van Moolenbroek.El 411*d8634badSDavid van Moolenbroek.Pp 412*d8634badSDavid van MoolenbroekThese lines resemble 413*d8634badSDavid van Moolenbroek.Xr ed 1 414*d8634badSDavid van Moolenbroeksubcommands to convert 415*d8634badSDavid van Moolenbroek.Ar file1 416*d8634badSDavid van Moolenbroekinto 417*d8634badSDavid van Moolenbroek.Ar file2 . 418*d8634badSDavid van MoolenbroekThe line numbers before the action letters pertain to 419*d8634badSDavid van Moolenbroek.Ar file1 ; 420*d8634badSDavid van Moolenbroekthose after pertain to 421*d8634badSDavid van Moolenbroek.Ar file2 . 422*d8634badSDavid van MoolenbroekThus, by exchanging 423*d8634badSDavid van Moolenbroek.Ic a 424*d8634badSDavid van Moolenbroekfor 425*d8634badSDavid van Moolenbroek.Ic d 426*d8634badSDavid van Moolenbroekand reading the line in reverse order, one can also 427*d8634badSDavid van Moolenbroekdetermine how to convert 428*d8634badSDavid van Moolenbroek.Ar file2 429*d8634badSDavid van Moolenbroekinto 430*d8634badSDavid van Moolenbroek.Ar file1 . 431*d8634badSDavid van MoolenbroekAs in 432*d8634badSDavid van Moolenbroek.Xr ed 1 , 433*d8634badSDavid van Moolenbroekidentical 434*d8634badSDavid van Moolenbroekpairs (where num1 = num2) are abbreviated as a single 435*d8634badSDavid van Moolenbroeknumber. 436*d8634badSDavid van Moolenbroek.Sh ENVIRONMENT 437*d8634badSDavid van Moolenbroek.Bl -tag -width TMPDIR 438*d8634badSDavid van Moolenbroek.It Ev TMPDIR 439*d8634badSDavid van MoolenbroekIf the environment variable 440*d8634badSDavid van Moolenbroek.Ev TMPDIR 441*d8634badSDavid van Moolenbroekexists, 442*d8634badSDavid van Moolenbroek.Nm 443*d8634badSDavid van Moolenbroekwill use the directory specified by 444*d8634badSDavid van Moolenbroek.Ev TMPDIR 445*d8634badSDavid van Moolenbroekas the temporary directory. 446*d8634badSDavid van Moolenbroek.El 447*d8634badSDavid van Moolenbroek.Sh FILES 448*d8634badSDavid van Moolenbroek.Bl -tag -width /tmp/diff.XXXXXXXX -compact 449*d8634badSDavid van Moolenbroek.It Pa /tmp/diff. Ns Ar XXXXXXXX 450*d8634badSDavid van MoolenbroekTemporary file used when comparing a device or the standard input. 451*d8634badSDavid van MoolenbroekNote that the temporary file is unlinked as soon as it is created 452*d8634badSDavid van Moolenbroekso it will not show up in a directory listing. 453*d8634badSDavid van Moolenbroek.El 454*d8634badSDavid van Moolenbroek.Sh DIAGNOSTICS 455*d8634badSDavid van MoolenbroekThe 456*d8634badSDavid van Moolenbroek.Nm 457*d8634badSDavid van Moolenbroekutility exits with one of the following values: 458*d8634badSDavid van Moolenbroek.Pp 459*d8634badSDavid van Moolenbroek.Bl -tag -width Ds -compact -offset indent 460*d8634badSDavid van Moolenbroek.It 0 461*d8634badSDavid van MoolenbroekNo differences were found. 462*d8634badSDavid van Moolenbroek.It 1 463*d8634badSDavid van MoolenbroekDifferences were found. 464*d8634badSDavid van Moolenbroek.It \*(Gt1 465*d8634badSDavid van MoolenbroekAn error occurred. 466*d8634badSDavid van Moolenbroek.El 467*d8634badSDavid van Moolenbroek.Sh SEE ALSO 468*d8634badSDavid van Moolenbroek.Xr cmp 1 , 469*d8634badSDavid van Moolenbroek.Xr comm 1 , 470*d8634badSDavid van Moolenbroek.Xr diff3 1 , 471*d8634badSDavid van Moolenbroek.Xr ed 1 , 472*d8634badSDavid van Moolenbroek.Xr pr 1 , 473*d8634badSDavid van Moolenbroek.Xr sdiff 1 , 474*d8634badSDavid van Moolenbroek.Xr fnmatch 3 , 475*d8634badSDavid van Moolenbroek.Xr re_format 7 476*d8634badSDavid van Moolenbroek.Sh STANDARDS 477*d8634badSDavid van MoolenbroekThe 478*d8634badSDavid van Moolenbroek.Nm 479*d8634badSDavid van Moolenbroekutility is compliant with the 480*d8634badSDavid van Moolenbroek.St -p1003.1-2008 481*d8634badSDavid van Moolenbroekspecification. 482*d8634badSDavid van Moolenbroek.Pp 483*d8634badSDavid van MoolenbroekThe flags 484*d8634badSDavid van Moolenbroek.Op Fl aDdIiLlNnPpqSsTtwXx 485*d8634badSDavid van Moolenbroekare extensions to that specification. 486*d8634badSDavid van Moolenbroek.Sh HISTORY 487*d8634badSDavid van MoolenbroekA 488*d8634badSDavid van Moolenbroek.Nm 489*d8634badSDavid van Moolenbroekcommand appeared in 490*d8634badSDavid van Moolenbroek.At v6 . 491*d8634badSDavid van Moolenbroek.Sh BUGS 492*d8634badSDavid van MoolenbroekWhen comparing directories with the 493*d8634badSDavid van Moolenbroek.Fl b , 494*d8634badSDavid van Moolenbroek.Fl w 495*d8634badSDavid van Moolenbroekor 496*d8634badSDavid van Moolenbroek.Fl i 497*d8634badSDavid van Moolenbroekoptions specified, 498*d8634badSDavid van Moolenbroek.Nm 499*d8634badSDavid van Moolenbroekfirst compares the files ala 500*d8634badSDavid van Moolenbroek.Xr cmp 1 , 501*d8634badSDavid van Moolenbroekand then decides to run the 502*d8634badSDavid van Moolenbroek.Nm 503*d8634badSDavid van Moolenbroekalgorithm if they are not equal. 504*d8634badSDavid van MoolenbroekThis may cause a small amount of spurious output if the files 505*d8634badSDavid van Moolenbroekthen turn out to be identical because the only differences are 506*d8634badSDavid van Moolenbroekinsignificant whitespace or case differences. 507