Diff命令操作简介

我们通过下面这个例子来说明diff命令的简单用法。

文件准备

  • old.txt

    111
    222
    333
    444
    555
    666
    777
    888
    999
    000

  • new.txt

    111
    1.5
    222
    2.5
    2.6
    333
    444
    555
    888
    909
    000

1. Normal

$ diff old.txt new.txt

输出说明

  • a (add)

1a2 在old第1行之后加入了new的第2行
2a4,5在old第2行之后加入了new的第4,5行

  • c (change)

9c10old中第9行修改为new第10行
<表示old文件中的内容
>表示new文件中的内容

  • d (delete)

6,7d8old第6、第7行原本在new第8行之后

2. 并排输出

$ diff old.txt new.txt -y -W 50

参数说明

  • -y 并排输出
  • -W NUM 输出列数

输出说明

  • “|” 表示前后2个文件内容有不同
  • “<”表示后面文件比前面文件少了1行内容
  • “>”表示后面文件比前面文件多了1行内容

3. 上下文输出

$ diff old.txt new.txt -c

参数说明

  • -c NUM

Output NUM (default 3) lines of copied context.

输出说明

  • “+” 比较的文件的后者比前着多一行
  • “-” 比较的文件的后者比前着少一行
  • “!” 比较的文件两者有差别的行

4. 统一格式输出

$ diff old.txt new.txt -u

输出说明

  • "---" 表示变动前的文件
  • "+++" 表示变动后的文件
  • @@ -1,10 +1,11 @@ 变动位置

'-'表示old.txt
'+'表示new.txt
'-1,10' old.txt的前10行
'+1,10' new.txt的前11行

5. 比较文件夹不同

$ diff path1 path2

PS : 给目录打补丁会发生覆盖

6. 比较文件不同,产生补丁

$ diff -ruN old.txt new.txt > log.patch
$ cat log.patch

7. 打补丁

$ patch -p0 < log.patch
patching file old.txt
  • -pNUM

去掉默认路径中的NUM个‘/

8. 恢复

如果恢复打补丁之前的文件

$ patch -RE -p0 < log.patch
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 早上五点起床,写字半小时后去早市买水果,然后去菜园摘菜,忙碌而又充实的一天开始了。
    墨蘭阅读 240评论 2 2
  • 今天跟朋友吃饭的路上,看到一只虎皮鹦鹉,背部是灰白色条纹,像麻雀的羽毛,腹部和长尾巴都是淡绿色。可怜的小家伙不知道...
    艳翎阅读 517评论 0 0
  • 陋室铭 只要有了仙龙就可以出名, 那么居处虽然简陋,却因主人的有“德”而“馨”,也就是说陋室因为有道德品质高尚的人...
    范乘风阅读 1,199评论 0 4