当前位置: 首页 > news >正文

linux diff命令使用教程

简介

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

1、diff如何工作

diff分析两个文件,并输出两个文件的不同的行。diff的输出结果表明需要对一个文件做怎样的操作之后才能与第二个文件相匹配。diff并不会改变文件的内容,但是diff可以输出一个ed脚本来应用这些改变。

2、基本语法

diff file1 file2

3、参数说明

参数说明
-a或者–text,diff预设只会逐行比较文本文件
-b或–ignore-space-change ,不检查空格字符的不同。
-B或–ignore-blank-lines ,不检查空白行。
-c显示全部内容,并标出不同之处
-C<行数>或–context行数 与执行"-c-行数"指令相同。
-i或–ignore-case ,不检查大小写的不同。
-p若比较的文件为C语言的程序码文件时,显示差异所在的函数名称
-N或–new-file ,在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-P或–unidirectional-new-file ,与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-r比较子目录中的文件
-v显示版本信息
-w或–ignore-all-space , 忽略全部的空格字符。
-W或–width , 在使用-y参数时,指定栏宽。默认值:130
-x或–exclude , 不比较选项中所指定的文件或目录。
-X或–exclude-from , 您可以将文件或目录类型存成文本文件,然后在=中指定此文本文件。
-y或–side-by-side ,以并列的方式显示文件的异同之处。
–left-column在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。
–suppress-common-lines在使用-y参数时,仅显示不同之处。

举个栗子一

1、先创建2个文件
# 文件1
[root@master home]# vim file1
1
2
3
4
5
6
7
8# 文件2
[root@master home]# vim file2
1
c
3
4
5
6
7
8
2、比较

使用diff比较他们的不同,输出以下结果

[root@master home]# diff file1 file2
2c2
< 2
---
> c
2.1、比较说明 2c2

要明白diff比较结果的含义,我们必须牢记一点,diff描述两个文件不同的方式是告诉我们怎么样改变第一个文件之后与第二个文件匹配

2c2

我们看看上面的比较结果中的第一行 2c2 前面的数字2表示第一个文件中的行,中间有一个字母c表示需要在第一个文件上做的操作(a=add,c=change,d=delete),详情请看下面的表格说明,后面的数字2表示第二个文件中的行。

指令说明
aadd 的简写,表示需要在第一个文件的指定行添加字符后才能与第二个文件匹配
cchange 的简写,表示需要在第一个文件的指定行修改字符后才能与第二个文件匹配
ddelete 的简写,表示需要在第一个文件的指定行删除后才能与第二个文件匹配

**< 2 **:删除 2所在的行

**> c ** : 所在行添加 c

所以,上面2c2的含义是:在第一个文件file1将2行的字符2换成c,就和第二个文件一样了;

2.2、图形界面的比较

通过 windows的Beyond Compare软件进行比较,就可以很直观地看到,是第二行不同

举个栗子二

1、创建2个文件
# 文件1
[root@master home]# vim 1.txt 
1
3
4
5
6
7
8# 文件2 (注意:第3行是空行)
[root@master home]# vim 2.txt 
134567
yexindongwoaini
1
2
3
4
2、比较

使用diff比较他们的不同,输出以下结果,仔细看,有3个不同的地方

[root@master home]# diff 1.txt 2.txt 
0a1,4
> 134567
> yexindong
> 
> woaini
1a6
> 2
4,7d8
< 5
< 6
< 7
< 8
2.1、比较结果说明:0a1,4

先看第一个,0a1,4指的是第一个文件第0行加上以下>中的内容,就和第二个文件的1~4行一样了;

0a1,4
> 134567
> yexindong
> 
> woaini
2.2、比较结果说明:1a6

第二个不同的地方:1a6,指的是第一个文件的第一行后面加上 2,就和第二个文件的第6行一样了;

1a6
> 2
2.3、比较结果说明:4,7d8

第三个不同的地方:4,7d8,指的是删除第一个文件 4~7(包含4,5,6,7行)行的内容,就和第二个文件的第8行一样了

4,7d8
< 5
< 6
< 7
< 8
3、比较的另一种方式
3.1、使用-u参数显示文件差别

也可以使用 -u 参数来直接显示出两个文件的区别;

[root@master home]# diff  -u 1.txt 2.txt 
--- 1.txt	2023-01-06 14:09:40.430676333 +0800
+++ 2.txt	2023-01-16 09:47:04.179507148 +0800
@@ -1,7 +1,8 @@
+134567
+yexindong
+
+woaini1
+234
-5
-6
-7
-8
3.2、使用 -y 参数显示文件差别

显示2个文件所有内容和差别;

[root@master home]# diff -y 1.txt 2.txt>	134567>	yexindong>>	woaini
1								1>	2
3								3
4								4
5							      <
6							      <
7							      <
8							      <

加上 --suppress-common-lines 参数时仅显示差别

[root@master home]# diff -y --suppress-common-lines  1.txt 2.txt>	134567>	yexindong>>	woaini>	2
5							      <
6							      <
7							      <
8							      <
2.4、图形界面的比较

其他用法栗子

1、比较2个文件,并将结果输出到文件
diff  1.txt 2.txt -y > diff.txt
2、比较2个目录的差别
# 第一个目录
src/
├── test1
│   └── one
├── test2
└── test34 directories, 0 files# 第二个目录
dst/
├── test1
├── test2
│   └── one
└── test34 directories, 0 files# diff进行比较
> diff -r src/ dst/
Only in src/test1: one
Only in dst/test2: one
http://www.dtcms.com/a/302822.html

相关文章:

  • 最长连续数组
  • 【C++11】列表初始化【{ }使用详解】
  • Facenet(MTCNN+InceptionResnetV1)人脸考勤项目(有缺点,但可用)
  • 境外期货Level2高频Tick历史行情数据获取与应用指南
  • 基于LangGraph Cli的智能数据分析助手
  • MCU 中的 PWM(脉冲宽度调制)是什么?
  • 八大神经网络的区别
  • Java Stream流的使用
  • Open CV图像基本操作可莉版
  • Linux:线程同步与线程互斥
  • PBR技术
  • 杭州网站建设公司,哪家擅长做多语言外贸站?
  • SpringCloude快速入门
  • JVM 笔记:类加载、内存管理、垃圾收集与垃圾收集器
  • binlog与Maxwell 与 慢查询
  • docker排查OOM
  • 图——邻接表基本操作算法实现
  • 【SpringMVC】SpringMVC的概念、创建及相关配置
  • 对比分析 OceanBase 与数据库中间件
  • Java 数学工具类 Math
  • 6、CentOS 9 安装 Docker
  • 香港Web3媒体Techub News活动大事记:时间线全记录
  • 将 NI Ettus USRP X410 的文件系统恢复出厂设置
  • CMake简单教程
  • 智能指挥调度系统:数字化时代的协同决策中枢
  • 从0到1学PHP(一):PHP 基础入门:开启后端开发之旅
  • 基于 OpenCV 与 sklearn 的数字识别:KNN 算法实践
  • 【CDA干货】金融超市电商App经营数据分析案例
  • 星辰大海的征途:星宸科技的中国芯片突围战
  • 【行测】常识判断1