一、diff介绍

windows系统下面就有不错的文本对比工具可以使用,例如常用的Beyond Compare,WinMerge都是图形界面的比较工具而且使用非常方便,如果你仅仅是在windows下工作,这些GUI的比较工具绝对是首选。对于在linux环境下工作的人来说,如果每次想看两个文件的区别都要将文件下载到windows环境然后用图形工具进行比较实在是太麻烦了。那么我们必须学会使用linux环境下的比较工具 diff。

diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。

diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

命令格式:diff [参数] [文件1或目录1] [文件2或目录2]

二、参数介绍

-<行数>  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。
-a或--text  diff预设只会逐行比较文本文件。
-b或--ignore-space-change  不检查空格字符的不同。
-B或--ignore-blank-lines  不检查空白行。
-c  显示全部内文,并标出不同之处。
-C<行数>或--context<行数>  与执行"-c-<行数>"指令相同。
-d或--minimal  使用不同的演算法,以较小的单位来做比较。
-D<巨集名称>或ifdef<巨集名称>  此参数的输出格式可用于前置处理器巨集。
-e或--ed  此参数的输出格式可用于ed的script文件。
-f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H或--speed-large-files  比较大文件时,可加快速度。
-I<字符或字符串>或--ignore-matching-lines<字符或字符串>  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。
-i或--ignore-case  不检查大小写的不同。
-l或--paginate  将结果交由pr程序来分页。
-n或--rcs  将比较结果以RCS的格式来显示。
-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:
Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q或--brief  仅显示有无差异,不显示详细的信息。
-r或--recursive  比较子目录中的文件。
-s或--report-identical-files  若没有发现任何差异,仍然显示信息。
-S<文件>或--starting-file<文件>  在比较目录时,从指定的文件开始比较。
-t或--expand-tabs  在输出时,将tab字符展开。
-T或--initial-tab  在每行前面加上tab字符以便对齐。
-u,-U<列数>或--unified=<列数>  以合并的方式来显示文件内容的不同。
-v或--version  显示版本信息。
-w或--ignore-all-space  忽略全部的空格字符。
-W<宽度>或--width<宽度>  在使用-y参数时,指定栏宽。
-x<文件名或目录>或--exclude<文件名或目录>  不比较选项中所指定的文件或目录。
-X<文件>或--exclude-from<文件>  您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件。
-y或--side-by-side  以并列的方式显示文件的异同之处。
--help  显示帮助。
--left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
--suppress-common-lines  在使用-y参数时,仅显示不同之处。

三、使用实例

3.1、-c

#diff  -c test.py test1.py  #两文件相同,无返回值#diff  -c test.py test1.py
*** test.py 2021-12-08 14:23:20.739389410 +0800
--- test1.py    2022-03-09 15:06:31.517230918 +0800
***************
*** 4,15 ****# Author: $SHTERM_REAL_USER@alibaba-inc.com# Create Date: 2021-12-08 14:16# Modify Author: $SHTERM_REAL_USER@alibaba-inc.com
! # Modify Date: 2021-12-08 14:16# Function: #***************************************************************#import unittestfrom pathlib2 import Path
! class TestUnit(unittest.TestCase):--- 4,15 ----# Author: $SHTERM_REAL_USER@alibaba-inc.com# Create Date: 2021-12-08 14:16# Modify Author: $SHTERM_REAL_USER@alibaba-inc.com
! # Modify Date: 2022-03-09 15:06# Function: #***************************************************************#import unittestfrom pathlib2 import Path
! import osclass TestUnit(unittest.TestCase):# !处是差别的地方

3.2、-B

#diff  -B test.py test1.py
7c7
< # Modify Date: 2021-12-08 14:16
---
> # Modify Date: 2022-03-09 15:06
11a12,13
> import os
>#diff -c  -B test.py test1.py
*** test.py 2021-12-08 14:23:20.739389410 +0800
--- test1.py    2022-03-09 15:12:03.146652715 +0800
***************
*** 4,14 ****# Author: $SHTERM_REAL_USER@alibaba-inc.com# Create Date: 2021-12-08 14:16# Modify Author: $SHTERM_REAL_USER@alibaba-inc.com
! # Modify Date: 2021-12-08 14:16# Function: #***************************************************************#import unittestfrom pathlib2 import Pathclass TestUnit(unittest.TestCase):
--- 4,16 ----# Author: $SHTERM_REAL_USER@alibaba-inc.com# Create Date: 2021-12-08 14:16# Modify Author: $SHTERM_REAL_USER@alibaba-inc.com
! # Modify Date: 2022-03-09 15:06# Function: #***************************************************************#import unittestfrom pathlib2 import Path
+ import os
+ class TestUnit(unittest.TestCase):

3.3、-q

#diff -q test.py test1.py
Files test.py and test1.py differ#diff -q test.py test2.py  #相同文件没有回显

3.4、-y

四、结果特殊字符说明

"|"表示前后2个文件内容有不同
"<"表示后面文件比前面文件少了1行内容
">"表示后面文件比前面文件多了1行内容
"+" 比较的文件的后者比前着多一行
"-" 比较的文件的后者比前着少一行
"!" 比较的文件两者有差别的行

五、参考文档

1、https://www.runoob.com/linux/linux-comm-diff.html

2、https://www.cnblogs.com/peida/archive/2012/12/12/2814048.html

3、https://www.cnblogs.com/wf-linux/p/9488257.html

Linux 文本对比 diff相关推荐

  1. Vue前端文本对比DIFF

    介绍 前端文本比对找了几个库: 分别是: CodeMirror.DiffMatchPatch.Mergely.vue-code-diff,最后选择用:vue-code-diff 源码工程地址:DIFF ...

  2. linux 下 grep -c sh* /etc/passwd,Linux文本处理三剑客--grep

    稍微接触过linux都会知道有三个非常强大文本处理工具,那就是grep.sed和awk,想必都有听说过吧. Linux文本处理三剑客: grep, egrep, fgrep:文本过滤工具(模式:pat ...

  3. python——difflib内置模块之文本对比

    文章目录 一.difflib模块 1. 对比文件生成差异结果文本 2 .对比文件生成html格式的差异化比较页面 二.Linux文件之间的对比 一.difflib模块 difflib为python的标 ...

  4. Python中的difflib模块(文本对比)

    Python中的difflib模块(文本对比) 1. difflib模块简介 2. difflib模块用法 3. 符号理解 4. 实现文本对比 5. linux文件之间的对比 1. difflib模块 ...

  5. Python的文本对比模块difflib

    2.1 文件内容差异对比方法 ​ difflib作为Python的标准库模块,无需安装,作用是对比文本之间的差异,且支持输出可读性较强的html文档,与Linux下的diff命令相似.我们可以使用di ...

  6. linux 在线对比工具,值得收藏!6款超棒的在线工具合集

    日常工作和学习中,当需要用到某类工具时,首先想到的就是有没有针对这类问题的PC.手机软件. 其实,有很多使用频率并不是很高的小工具,完全可以由在线工具替代.现在,有很多在线工具在使用体验和便利程度方面 ...

  7. linux 匹配文本中的ip,linux文本三剑客匹配网卡IP地址大PK(CentOS 7系统)

    运维工程师在做配置的过程中很多时候都需要去获取目标服务器网卡上的IP地址,那究竟用什么方式获取更便捷了,博主今天就带大家使用linux文本三剑客分别获取一下网卡的IP地址,最后我们再来对比一下. 实验 ...

  8. Linux中的Diff和Patch

    转自:https://www.cnblogs.com/cocowool/p/6409643.html Linux中的Diff和Patch 本文主要记录两个命令的学习情况:diff 和 patch.di ...

  9. Python中的文件对比(difflib文件对比、Linux文件对比)

    一.difflib文件对比 1.观察对比法 代码块: text1 = ''' 1. Beautiful is better than ugly.2. Explicit is better than i ...

最新文章

  1. automake生成静态库文件_动手 | 奶奶级的动态库入门
  2. html浏览器影响js问题,js 浏览器兼容性问题
  3. 信捷步进指令的使用_【笔记】信捷plc应用,指令篇
  4. cocos2d-x 日志...
  5. linux ntfs 用户权限,linux权限及ntfs文件系统权限的知识
  6. Fixcel电子表格——报表模块(一)
  7. Eclipse 格式化代码时不换行与自动换行WordWrap插件
  8. HCIE Security 单包攻击防范 备考笔记(幕布)
  9. 分享12306全自动验证码识别提交,春运抢票准备时
  10. Windows游戏编程大师技巧第二版学习笔记之第一章
  11. sm2和sm4加密算法浅析
  12. 分享个短视频竞品分析报告
  13. 网站开发从陌生到了解
  14. 计算机组装大赛活动感悟,计算机组装大赛总结参考
  15. 全网搜索一个人的痕迹,爬取百度搜索结果
  16. [HDU]6069 Counting Divisors
  17. c++ unrar 源码
  18. 快递(EMS)增值业务解决方案
  19. Sprite Renderer
  20. 独孤思维:免费软件搬运项目,零成本玩公众号赚零花钱

热门文章

  1. 数字逻辑课程设计#Quartus II
  2. Deep Learning(深度学习)
  3. spring接管mybatis
  4. python accessiblechildren用法_python类继承用法实例分析
  5. 服务器不能复制粘贴文件的处理方式
  6. 武器装备测试系统ETest
  7. 记微信开发者工具登录网络连接失败
  8. 关于上位机和下位机的一些解释
  9. 超唯美海洋夕阳日落网站维护HTML源码
  10. 九龙证券|近50亿资金抢筹券商龙头,知名游资杀入热门互联网股