1 命令格式

$diff <变动之前的文件> <变动之后的文件>

2 diff文件的三种格式

normal diff

context diff

unified diff

3 示例

变动之前的文件:

b

bc

b

b

b

每行一个b,共5行。

变动之后的文件:

b

bcd

b

b

b

共5行,第二行一个d,其它行都是b。

4 正常格式的diff

这个diff输出的只有difference本身,不包括difference所在的代码本身。

diff f1.txt f2.txt

输出如下:

2c2

< bc

------

> bcd

第一行说明变动的位置:前面的2是前面文件中的位置,后面一个2是后面文件中的位置,表示行号。

c表示change,即内容改变,如果是a的话,表示该行是新增加的,如果是d的话,表示该行被删除了。

小于号“<”表示删除该行,大于号">"表示增加该行。小于号和大于号后面的内容是该行的内容。

5 context diff

diff -c f1.txt f2.txt

输出如下:

*** f1.txt    2016-12-25 23:53:02.619930781 -0500

--- f2.txt      2016-12-25 23:52:54.131930652 -0500

***************************

*** 1,5 ***

b

!bc

b

b

b

---1,5---

b

!bcd

b

b

b

前面两行是两个文件的基本信息,即文件名和时间,后面是时区。并且,*表示是旧的文件,-表示的是新的文件。

***1,5***表示1到5行的所有内容。对于---1,5---同样。

!表示本行的内容有改变。同样,a表示增加一行,d表示减少一行。

可见,对于context格式的输出而言,f1和f2文件的上下文是分别显示的,

因此有很多重复的内容,因此有了unified格式,也就是说,f1和f2公用同

一个上下文。

6 unified diff

$ diff -u f1.txt f2.txt

输出如下:

--- f1.txt        2016-12-25 23:53:02.619930781 -0500

+++ f2.txt      2016-12-25 23:52:54.131930652 -0500

@@ -1,5 +1,5 @@

b

-bc

+bcd

b

b

b

-表示f1.txt文件,+表示f2.txt文件。

1,5表示第1行到第5行。

1,5表示第1行到第5行。

-表示原文件的行,+表示新文件的行。

所以,只看-的话就是原文件,只看+的话,就是新文件了。

diff输出格式解析的更多相关文章

  1. (待补充)diff 算法解析

    今天,学习React的时候,底层提到了 diff算法,顺藤摸瓜, 也发现了VUE也使用了diff算法. mark一下,后续补充 infoq-VUE-diff算法 react-diff算法

  2. 解析vue2.0的diff算法 虚拟DOM介绍

    react虚拟dom:依据diff算法台 前端:更新状态.更新视图:所以前端页面的性能问题主要是由Dom操作引起的,解放Dom操作复杂性 刻不容缓 因为:Dom渲染慢,而JS解析编译相对非常非常非常快 ...

  3. git diff与linux diff的输出格式之unified format

    前言 前面有一篇文章<一个有些意思的项目--文件夹对比工具(一)>,里面简单讲了下diff算法之--Myers算法. 既然是算法,就会有实现,比如git diff中有Myers的实现,gi ...

  4. 虚拟dom与diff算法 分析

    好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM

  5. diff 比较两个文件的差异

    功能:比较两个文件的差异,并把不同地方的信息显示出来.默认diff格式的信息. diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件.也使用patch命令对 ...

  6. linux常用命令--diff

    diff是Unix系统的一个很重要的工具程序. 它用来比较两个文本文件的差异,是代码版本管理的基石之一.你在命令行下,输入: $ diff <变动前的文件> <变动后的文件> ...

  7. ReactiveNative学习之Diff算法

    React 源码剖析系列 - 不可思议的 react diff深入浅出React(四):虚拟DOM Diff算法解析React diff 算法总结链接引用的文章React出于性能的考虑,为了避免频繁操 ...

  8. diff比较两个文件 linux

    功能:比较两个文件的差异,并把不同地方的信息显示出来.默认diff格式的信息. diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的补丁文件.也使用patch命令对 ...

  9. 虚拟DOM解析及其在框架里的应用

    虚拟DOM解析及其在框架里的应用 浏览器是怎样解析HTML并且绘出整个页面的 上图为webkit引擎浏览器的处理流程,如上图大致分为4大步: 第一步,HTML解析器分析html,构建一颗DOM树: 第 ...

随机推荐

  1. css基础2

    标准流(normalflow) ◆元素默认的显示方式都是按照标准流的方式显示 ◆块级元素默认独占一行显示===>标准流显示方式 ◆行内元素在一行上显示===>    标准流的显示方式 浮动 ...

  2. eclipse从下载到使用

    经常遇到有同学问我: 为啥我的eclipse没有你说的那个东西? 那是咱两选择的平台不一样 我的eclipse为啥和你的那个长的不一样? 那是咱两选择的版本不一样 为什么我的打开报XXX错误? ... ...

  3. iOS版本更新的App提交审核发布流程

    http://www.2cto.com/kf/201502/378698.html 版本更新的App和新App的发布提交流程略有不同,新的App需要在开发者账号里准备发布证书,添加App的id,关联描 ...

  4. JavaScript:编程改变文本样式

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" Content=&q ...

  5. Java线程:线程的同步-同步方法

    Java线程:线程的同步-同步方法   线程的同步是保证多线程安全访问竞争资源的一种手段. 线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源.什么时候需要考虑同步,怎么同步等等问 ...

  6. id to load is required for loading

    id一般作为主键,不为空.springmvc hibernate 框架中根据参数ids执行批量删除的方法时报错,ids是id主键的数组集合.去搜了下,原因别的博客说了,是id为空引起的.实际上id不为 ...

  7. bash小技巧

    Linux 下shell基本上默认是 bash, 下面是我总结的一些技巧. &  后台运行程序 ,注意退出当前shell后 程序也会退出()   使用子shell, 比如 (cd ../../ ...

  8. [转]SQL SERVER – Importance of Database Schemas in SQL Server

    原文地址http://blog.sqlauthority.com/2009/09/07/sql-server-importance-of-database-schemas-in-sql-server/ ...

  9. java中一些定时器的使用

    一:简单说明 ScheduleExecutorService接口中有四个重要的方法,其中scheduleAtFixedRate和scheduleWithFixedDelay在实现定时程序时比较方便. ...

  10. Java提高篇—— 简单介绍Java 的内存泄漏

    java最明显的一个优势就是它的内存管理机制.你只需简单创建对象,java的垃圾回收机制负责分配和释放内存.然而情况并不像想像的那么简单,因为在Java应用中经常发生内存泄漏. 本教程演示了什么是内存 ...