Linux Shell 016-文本比较工具diff
Linux Shell 016-文本比较工具diff
本节关键字:Linux、Bash Shell、文本比较
相关指令:diff、cat、patch
diff介绍
diff工具用于逐行比较文件的不同,如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较子目录。
diff描述两个文件不同的方式是告诉我们怎样改变第一个文件之后与第二个文件匹配。
diff语法
基本语法:diff [选项] 文件1 文件2
diff常用选项
| 选项 | 说明 |
|---|---|
| -<行数> | 指定要显示多少行的文本,此参数必须与-c或-u参数一起使用 |
| -a | diff预设只会逐行比较文本文件 |
| -b | 不检查空格 |
| -B | 不检查空白行 |
| -c | 显示全部内容,并标出不同之处,上下文格式显示 |
| -i | 不检查大小写 |
| -w | 忽略所有的空格 |
| –normal | 正常格式显示(默认) |
| -u | 合并格式显示文件内容的不同 |
| –help | 显示帮助 |
diff实例
比较两个普通文件异同
$ cat file1
aaaa
111
hello world
222
333
bbb
$
$ cat file2
aaa
hello
111
222
bbb
333
world
正常显示
diff目的:file1如何改变才能和file2匹配
$ diff file1 file2
1c1,2 # 第一个文件的第1行需要改变(c=change)才能和第二个文件的第1到2行匹配
< aaaa # 小于号"<"表示左边文件(file1)文件内容
--- # ---表示分隔符
> aaa # 大于号">"表示右边文件(file2)文件内容
> hello
3d3 # 第一个文件的第3行删除(d=delete)后才能和第二个文件的第3行匹配
< hello world
5d4 # 第一个文件的第5行删除后才能和第二个文件的第4行匹配
< 333
6a6,7 # 第一个文件的第6行增加(a=add)内容后才能和第二个文件的第6到7行匹配
> 333 # 需要增加的内容在第二个文件里是333和world
> world
上下文格式显示
$ diff -c file1 file2
# 前两行主要列出需要比较的文件名和文件的时间戳;文件名前面的符号***表示file1,---表示file2
*** file1 2019-04-16 16:26:05.748650262 +0800
--- file2 2019-04-16 16:26:30.470646030 +0800
*************** # 我是分隔符
*** 1,6 **** # 以***开头表示file1文件,1,6表示1到6行
! aaaa # !表示该行需要修改才与第二个文件匹配111
- hello world # -表示需要删除该行才与第二个文件匹配222
- 333 # -表示需要删除该行才与第二个文件匹配bbb
--- 1,7 ---- # 以---开头表示file2文件,1,7表示1到7行
! aaa # 表示第一个文件需要修改才与第二个文件匹配
! hello # 表示第一个文件需要修改才与第二个文件匹配111222bbb
+ 333 # 表示第一个文件需要加上该行才与第二个文件匹配
+ world # 表示第一个文件需要加上该行才与第二个文件匹配
合并格式显示
$ diff -u file1 file2
# 前两行主要列出需要比较的文件名和文件的时间戳;文件名前面的符号---表示file1,+++表示file2
--- file1 2019-04-16 16:26:05.748650262 +0800
+++ file2 2019-04-16 16:26:30.470646030 +0800
@@ -1,6 +1,7 @@
-aaaa
+aaa
+hello111
-hello world222
-333bbb
+333
+world
比较两个目录不同
# 默认情况下也会比较两个目录里相同文件的内容
$ diff dir1 dir2
diff dir1/file1 dir2/file1
0a1
> hello
Only in dir1: file3
Only in dir2: test1
如果只需要比较两个目录里文件的不同,不需要进一步比较文件内容,需要加-q选项
$ diff -q dir1 dir2
Files dir1/file1 and dir2/file1 differ
Only in dir1: file3
Only in dir2: test1
有时候我们需要以一个文件为标准,去修改其他文件,并且修改的地方较多时,我们可以通过打补丁的方式完成。
# 1)先找出文件不同,然后输出到一个文件
$ diff -uN file1 file2 > file.patch
# -u:上下文模式
# -N:将不存在的文件当作空文件# 2)将不同内容打补丁到文件
$ patch file1 file.patch
patching file file1# 3)测试验证
$ diff file1 file2
相关文章:
Linux Shell 016-文本比较工具diff
Linux Shell 016-文本比较工具diff 本节关键字:Linux、Bash Shell、文本比较 相关指令:diff、cat、patch diff介绍 diff工具用于逐行比较文件的不同,如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会…...
八股文打卡day13——计算机网络(13)
面试题:DNS是什么?DNS的查询过程是什么? 我的回答: 我来讲一下我对DNS的理解 DNS是域名系统,它是一个域名和IP地址相互映射的数据库。通过DNS,可以将我们浏览器中输入的域名,例如:…...
android studio导入module
在Android Studio中导入一个Module(模块),可以按照以下步骤进行操作: 打开Android Studio,并打开你的项目。在菜单栏中,点击 "File"(文件)-> "New"…...
Prometheus通过consul实现自动服务发现
环境,软件准备 本次演示环境,我是在虚拟机上安装 Linux 系统来执行操作,以下是安装的软件及版本: System: CentOS Linux release 7.6Docker: 24.0.5Prometheus: v2.37.6Consul: 1.6.1 注意:这里为了方便启动 Prometheus、Consul服…...
c++11--原子操作,顺序一致性,内存模型
1.原子操作 多线程下为了实现对临界区资源的互斥访问,最普遍的方式是使用互斥锁保护临界区。 然而,如果临界区资源仅仅是数值类型时,对这些类型c提供了原子类型,通过使用原子类型可以更简洁的获得互斥保护的支持。 (1). 一个实例…...
【数据结构】栈和队列(队列的基本操作和基础知识)
🌈个人主页:秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343🔥 系列专栏:《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 目录 前言 队列 队列的概念和结构 队列的…...
设计模式——适配器模式(Adapter Pattern)
概述 适配器模式可以将一个类的接口和另一个类的接口匹配起来,而无须修改原来的适配者接口和抽象目标类接口。适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装…...
测试C#使用OpenCvSharp从摄像头获取图片
OpenCvSharp也支持获取摄像头数据,不同于之前测试AForge时使用AForge控件显示摄像头数据流并从中截图图片,OpenCvSharp中显示摄像头数据流需要周期性地从摄像头中截取图片并显示在指定控件中。本文学习C#使用OpenCvSharp从摄像头获取图片的基本方式。 …...
【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)
Python网络爬虫基础 App抓包1. App爬虫原理2. reqable 的安装与配置reqable 安装教程reqable 的配置 3. 模拟器的安装与配置夜神模拟器的安装夜神模拟器的配置配置代理配置证书 4. 内联调试及注意事项软件启动顺开启抓包功reqable面板功列表部件功能列表数据快捷操作栏 夜神模拟…...
LabVIEW在电机噪声与振动探测的应用
LabVIEW在电机噪声与振动探测的应用 硬件部分是电机噪声和振动测试分析系统的基础,主要由三大核心组件构成:高灵敏度振动传感器、先进的信号调理电路和高性能数据采集卡。这些设备协同工作,确保了从电机捕获的噪声和振动信号的准确性和可靠性…...
编码器是什么,以光电编码器为例,说明一下光电编码器的名字由来,结构,原理,特点,用处
问题描述: 问题解答: 定义:编码器是一种测量角度、位置、速度等物理量的传感器,它可以将物理量转换成电信号,以便计算机或控制系统进行处理和控制。编码器通常由码盘和光电转换器组成,码盘上刻有若干条码道…...
MySQL:主从复制
准备两台服务器:安装好mysql mysql1:192.168.2.222 master mysql2:192.168.2.226 slave 1、主从服务器分别作以下 1.1、版本一致 1.2、初始化表,并在后台启动mysql 1.3、修改root的密码 2、修改主服务器master #vi /etc/my…...
【K8S 二进制部署】部署Kurbernetes的网络组件、高可用集群、相关工具
目录 一、K8S的网络类型: 1、K8S中的通信模式: 1.1、、pod内部之间容器与容器之间的通信 1.2、同一个node节点之内,不同pod之间的通信方式: 1.3、不同node节点上的pod之间是如何通信的呢? 2、网络插件一ÿ…...
Ubuntu 常用命令之 locate 命令用法介绍
🔥Linux/Ubuntu 常用命令归类整理 locate命令是在Ubuntu系统下用于查找文件或目录的命令。它使用一个预先构建的数据库(通常由updatedb命令创建)来查找文件或目录,因此它的查找速度非常快。 plocate 安装 locate 不是 Ubuntu 系统的原生命令/功能,要想在 Ubuntu 系统中…...
java中file类常用方法举例说明
java中file类常用方法举例说明 当使用 java.io.File 类时,以下是一些常用方法的举例说明: 创建文件或目录: // 使用路径名创建File实例 File file new File("C:\\Users\\UserName\\Documents\\example.txt");// 使用父路径和子路…...
机器学习分类模型
机器学习常见分类模型及特点 机器学习常见分类模型优缺点 决策树模型 决策树(Decision Tree)是一类常见的机器学习方法,可应用于分类与回归任务,这里主要讨论分类决策树。决策树是基于树结构来进行决策的。下图是使用决策树来决定…...
LaTeX符号大全:打破排版的边界
LaTeX符号大全:打破排版的边界 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一起探索一门极富表现力的排版艺术——LaTeX&…...
vue3-11
后端Java代码 src\router\a6router.ts文件 import { createRouter, createWebHashHistory } from vue-router import { useStorage } from vueuse/core import { Menu, Route } from ../model/Model8080 const clientRoutes [{path: /login,name: login,component: () > …...
【c语言】飞机大战2
1.优化边界问题 之前视频中当使用drawAlpha函数时,是为了去除飞机后面变透明,当时当飞机到达边界的时候,会出现异常退出,这是因为drawAlpha函数不稳定,昨天试过制作掩码图,下载了一个ps,改的话,…...
海康visionmaster-渲染控件:渲染控件加载本地图像的方法
描述 环境:VM4.0.0 VS2015 及以上 现象:渲染控件如何显示本地图像? 解答 思路:在 2.3.1 中,可以通过绑定流程或者模块来显示图像和渲染效果。因此,第一步, 可以使用在 VM 软件平台中给图像源模…...
终极指南:Aimeos数据库设计与优化——处理亿级商品数据的高效架构方案
终极指南:Aimeos数据库设计与优化——处理亿级商品数据的高效架构方案 【免费下载链接】aimeos Integrated online shop based on Laravel 10 and the Aimeos e-commerce framework for ultra-fast online shops, scalable marketplaces, complex B2B applications …...
终极指南:5个核心方案彻底解决AEUX插件连接失败问题
终极指南:5个核心方案彻底解决AEUX插件连接失败问题 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX AEUX作为连接设计工具与After Effects的专业桥梁,在提升设计…...
数字古籍下载工具bookget:从技术实现到应用实践
数字古籍下载工具bookget:从技术实现到应用实践 【免费下载链接】bookget bookget 数字古籍图书下载工具 项目地址: https://gitcode.com/gh_mirrors/bo/bookget 在数字化时代,学术研究与文化传承越来越依赖数字资源的获取效率。数字古籍下载作为…...
源码级赋能:基于Spring Boot/Vue的企业级AI视频平台二次开发实战与架构解析(GB28181/边缘计算/算法商城)
引言:从“黑盒采购”到“源码可控”的行业变革 在安防集成商和技术决策者的会议室里,有一个共识正在形成:“黑盒软件”正在成为企业数字化转型的枷锁。 传统的视频监控软件往往依赖特定的硬件锁(Key)或封闭的API&…...
Git-RSCLIP与YOLOv8结合:遥感图像目标检测实战指南
Git-RSCLIP与YOLOv8结合:遥感图像目标检测实战指南 遥感图像目标检测一直是地理信息系统和城市规划领域的重要技术需求。传统的检测方法在面对复杂多变的遥感场景时,往往表现不佳,特别是在处理不同尺度、不同角度的目标时存在明显局限性。 …...
OWL ADVENTURE快速上手:10分钟完成本地部署与第一个识别Demo
OWL ADVENTURE快速上手:10分钟完成本地部署与第一个识别Demo 你是不是也对那些能看懂图片、能回答图片问题的AI模型感到好奇?OWL ADVENTURE就是这样一个模型,它能理解图片里的内容,然后和你聊天。听起来很酷,但会不会…...
用74LS175D和面包板,手把手教你做一个四人抢答器(附完整电路图)
从零搭建四人抢答器:74LS175D芯片实战指南 在电子技术学习过程中,没有什么比亲手搭建一个实际可用的电路更能加深理解了。今天,我们将使用经典的74LS175D芯片,配合面包板、LED和按键开关,一步步构建一个功能完整的四人…...
别再搞混了!AUTOSAR通信栈里,PduR和CanTp到底为谁打工?一个DCM诊断请求的完整旅程
AUTOSAR通信栈揭秘:诊断请求如何穿越PduR与CanTp的迷宫 在汽车电子系统的开发中,诊断通信就像车辆的"健康检查系统",而AUTOSAR架构中的通信栈则是确保这些诊断命令能够准确传达的神经网络。许多工程师第一次接触AUTOSAR通信栈时&am…...
拆解RoboteX AVATAR机器人:4个电机如何驱动履带+摇臂?一份紧凑传动布局的保姆级图解
RoboteX AVATAR机器人传动系统深度解析:四电机协同驱动履带与摇臂的机械艺术 当第一次看到RoboteX AVATAR Tactical Robot在复杂地形中自如穿梭的视频时,很难不被它那看似简单却异常高效的移动方式所吸引。这款战术机器人的核心秘密,就藏在它…...
UniHacker终极指南:免费解锁Unity全平台专业功能的完整方案
UniHacker终极指南:免费解锁Unity全平台专业功能的完整方案 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker 作为一名Unity开发者,你是…...
