EDA365电子论坛网

标题: Linux diff命令 [打印本页]

作者: baqiao    时间: 2021-7-5 14:03
标题: Linux diff命令
1 W6 m- n; x$ B
Linux diff命令用于比较文件的差异。
/ I" a, l! j. W/ P0 w6 u! z# N5 W: b. V* i
diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。
! M7 @+ i3 K% p0 ~0 I
  l% A$ \) v- a/ q语法
7 h/ [$ \. ?& J' o4 Tdiff [-abBcdefHilnNpPqrstTuvwy][-<行数>][-C <行数>][-D <巨集名称>][-I <字符或字符串>][-S <文件>][-W <宽度>][-x <文件或目录>][-X <文件>][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]
3 N, w2 g5 j3 v; M* q9 J* d参数:- P, j) p, m. f. U' B
, i  v) g: Q6 z( {1 u( |
-<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。' k8 j  x* ]0 j
-a或--text  diff预设只会逐行比较文本文件。8 n, p, x) t! V- ?; j7 Q2 Q4 Q: C4 ~
-b或--ignore-space-change  不检查空格字符的不同。9 R* {# [7 `; c2 ~- d& }$ b
-B或--ignore-blank-lines  不检查空白行。3 n  u# E$ {. @7 z
-c  显示全部内文,并标出不同之处。
8 c7 U1 x! F& F-C<行数>或--context<行数>  与执行"-c-<行数>"指令相同。, U6 L% ~! |& z2 _3 G, A
-d或--minimal  使用不同的演算法,以较小的单位来做比较。/ A5 Q9 D2 p8 t& H
-D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。7 y- w: G: F, d9 |1 g7 z1 p
-e或--ed  此参数的输出格式可用于ed的script文件。
9 i- a, L( z9 t7 n' R2 ~-f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。# F6 Q  |5 N# I9 T' M; e
-H或--speed-large-files  比较大文件时,可加快速度。
+ E5 `  n/ Z( u9 I0 k-l<字符或字符串>或--ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
/ m1 N1 P1 P4 T-i或--ignore-case  不检查大小写的不同。
: P$ C6 Q, ]$ N* [-l或--paginate  将结果交由pr程序来分页。
' f- I6 R" r/ N1 `' j-n或--rcs  将比较结果以RCS的格式来显示。
, ^6 c* k/ ^3 k% ?-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:* x: U5 J3 U+ g+ ^: x' }. ^2 o* T
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
# J  e8 B1 L1 `9 M3 Y0 E- r' X8 r-p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
1 A4 `" `2 h$ J5 W& b8 }( h) [-P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。% @" h9 J6 d, v# g
-q或--brief  仅显示有无差异,不显示详细的信息。/ E2 p( t8 d. d. w2 l
-r或--recursive  比较子目录中的文件。" e# j5 |; W# S' w8 ~. z
-s或--report-identical-files  若没有发现任何差异,仍然显示信息。
3 d1 a& Z% h( G, U0 C- B-S<文件>或--starting-file<文件>  在比较目录时,从指定的文件开始比较。/ r0 G1 |$ R7 ?9 O
-t或--expand-tabs  在输出时,将tab字符展开。( M! E+ z& j+ L" V( ?1 c
-T或--initial-tab  在每行前面加上tab字符以便对齐。( N# v* h, @& q6 P
-u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。- r# f# g! d! k  Z) ?% ]1 y
-v或--version  显示版本信息。
6 K# X9 X& ]% k  |  Q, T2 [. I-w或--ignore-all-space  忽略全部的空格字符。
* |6 Q+ T' z# R6 X3 m+ p* D1 ?-W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
; d1 B$ M* }3 \" W" _$ |-x<文件名或目录>或--exclude<文件名或目录>  不比较选项中所指定的文件或目录。
& R8 b6 p& K$ V) N-X<文件>或--exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。5 K, N& d4 M3 B6 h
-y或--side-by-side  以并列的方式显示文件的异同之处。( o% C0 J4 X+ v- J: [" A
--help  显示帮助。
$ P7 m% v1 [; [: b7 k  J% A* M4 D--left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
2 g5 _+ J1 L1 ]- v6 X1 x--suppress-common-lines  在使用-y参数时,仅显示不同之处。
1 Q2 j" R/ ~; ?1 `实例1:比较两个文件
  `/ z6 Q" ]1 i' [[root@localhost test3]# diff log2014.log log2013.log ) d5 [7 v7 C- @2 n- S% t4 `8 E
3c3
! W; D. t! s+ K' D4 i! A$ V9 U* U< 2014-03
4 c! Z, y, r) I9 b8 l" j---9 x6 V8 S& }* X# J: L0 f8 l
> 2013-036 r; J, w+ o0 k) F
8c8" g6 E- ?1 ]) z+ S' b  @9 G
< 2013-07
; W) \4 v3 L4 w9 P' D0 ?---- m' A1 j4 D* k! ~
> 2013-08
8 A  M9 H0 _( k2 s6 U$ F7 B11,12d10
) b1 H- a3 ]. y9 S6 p9 Z< 2013-11* |% H8 |0 C% `' z3 g9 ]" @
< 2013-12
9 X3 b+ l6 E& q% f上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。& a- D, B# d6 V
* v$ {* p  M% J; ~$ o0 [* }
实例2:并排格式输出
' _7 t; k5 ?3 t+ t1 z4 z3 h[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
) v2 n* s$ N' \4 _* a7 U9 F2013-01                 2013-01' P( x" n. w4 C# l6 J# B
2013-02                 2013-02
- w7 H% Y) `! O* l) Y2014-03               | 2013-03, Q# G& [# e: u( K4 y% r
2013-04                 2013-04
6 c7 z7 d9 z# ~, R. L1 L9 f2013-05                 2013-05
! |# h( X, [9 p  q2013-06                 2013-06
6 B# y) `2 T' L% U2013-07                 2013-07: U; X' o( l- u# P) ]
2013-07               | 2013-08
9 H, \0 B) O/ w( _2013-09                 2013-09' V1 R; s, s* X2 D' H. P/ O" |
2013-10                 2013-10
7 i0 g& g  E" Q0 h6 ^1 B" E7 |2013-11               <
! F5 Y0 `5 ]- L' Y8 i2013-12               <
# D& `( U* }7 {[root@localhost test3]# diff log2013.log log2014.log  -y -W 50# X! N6 g6 _- m
2013-01                 2013-01
: v2 K, h7 Q* ?* d2013-02                 2013-020 D2 Q* L0 s' r( D% a2 u' h) `
2013-03               | 2014-03
* {* g8 i! W/ ^. T+ f" O: q2013-04                 2013-04( E% r& E3 O/ \6 ]/ x' o
2013-05                 2013-05
( a* q' E/ z+ ?$ O2013-06                 2013-06
2 B, g" z, Z' q& f+ Y8 Q, M2013-07                 2013-07
! G. \( w2 h* [& \1 {9 |3 x6 n2 I2013-08               | 2013-07
8 @! K, N+ k4 n' z2013-09                 2013-093 C! [/ a3 K, z2 f7 S* p2 h9 v% W
2013-10                 2013-10: Z) v' M5 S8 T. ^
                      > 2013-118 w1 R# `% Z$ g* p; I
                      > 2013-12
1 m! I9 @/ B  h; `说明:' e) N5 l9 k: b! _2 F) k

& S/ J3 I) y. |* C; O$ P"|"表示前后2个文件内容有不同
( w& m- h* E' v$ E! a9 u. ~"<"表示后面文件比前面文件少了1行内容
/ v5 S9 ?- X8 S/ J">"表示后面文件比前面文件多了1行内容
作者: NNNei256    时间: 2021-7-5 15:07
Linux diff命令
作者: CCxiaom    时间: 2021-7-5 18:03
Linux diff命令
作者: AustCor1    时间: 2021-7-5 18:06
Linux diff命令




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2