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

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参数一起使用
-adiff预设只会逐行比较文本文件
-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 本节关键字&#xff1a;Linux、Bash Shell、文本比较 相关指令&#xff1a;diff、cat、patch diff介绍 diff工具用于逐行比较文件的不同&#xff0c;如果指定要比较目录&#xff0c;则diff会比较目录中相同文件名的文件&#xff0c;但不会…...

八股文打卡day13——计算机网络(13)

面试题&#xff1a;DNS是什么&#xff1f;DNS的查询过程是什么&#xff1f; 我的回答&#xff1a; 我来讲一下我对DNS的理解 DNS是域名系统&#xff0c;它是一个域名和IP地址相互映射的数据库。通过DNS&#xff0c;可以将我们浏览器中输入的域名&#xff0c;例如&#xff1a;…...

android studio导入module

在Android Studio中导入一个Module&#xff08;模块&#xff09;&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开Android Studio&#xff0c;并打开你的项目。在菜单栏中&#xff0c;点击 "File"&#xff08;文件&#xff09;-> "New"&#xf…...

Prometheus通过consul实现自动服务发现

环境,软件准备 本次演示环境&#xff0c;我是在虚拟机上安装 Linux 系统来执行操作&#xff0c;以下是安装的软件及版本&#xff1a; System: CentOS Linux release 7.6Docker: 24.0.5Prometheus: v2.37.6Consul: 1.6.1 注意&#xff1a;这里为了方便启动 Prometheus、Consul服…...

c++11--原子操作,顺序一致性,内存模型

1.原子操作 多线程下为了实现对临界区资源的互斥访问&#xff0c;最普遍的方式是使用互斥锁保护临界区。 然而&#xff0c;如果临界区资源仅仅是数值类型时&#xff0c;对这些类型c提供了原子类型&#xff0c;通过使用原子类型可以更简洁的获得互斥保护的支持。 (1). 一个实例…...

【数据结构】栈和队列(队列的基本操作和基础知识)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​ 目录 前言 队列 队列的概念和结构 队列的…...

设计模式——适配器模式(Adapter Pattern)

概述 适配器模式可以将一个类的接口和另一个类的接口匹配起来&#xff0c;而无须修改原来的适配者接口和抽象目标类接口。适配器模式(Adapter Pattern)&#xff1a;将一个接口转换成客户希望的另一个接口&#xff0c;使接口不兼容的那些类可以一起工作&#xff0c;其别名为包装…...

测试C#使用OpenCvSharp从摄像头获取图片

OpenCvSharp也支持获取摄像头数据&#xff0c;不同于之前测试AForge时使用AForge控件显示摄像头数据流并从中截图图片&#xff0c;OpenCvSharp中显示摄像头数据流需要周期性地从摄像头中截取图片并显示在指定控件中。本文学习C#使用OpenCvSharp从摄像头获取图片的基本方式。  …...

【基础】【Python网络爬虫】【12.App抓包】reqable 安装与配置(附大量案例代码)(建议收藏)

Python网络爬虫基础 App抓包1. App爬虫原理2. reqable 的安装与配置reqable 安装教程reqable 的配置 3. 模拟器的安装与配置夜神模拟器的安装夜神模拟器的配置配置代理配置证书 4. 内联调试及注意事项软件启动顺开启抓包功reqable面板功列表部件功能列表数据快捷操作栏 夜神模拟…...

LabVIEW在电机噪声与振动探测的应用

LabVIEW在电机噪声与振动探测的应用 硬件部分是电机噪声和振动测试分析系统的基础&#xff0c;主要由三大核心组件构成&#xff1a;高灵敏度振动传感器、先进的信号调理电路和高性能数据采集卡。这些设备协同工作&#xff0c;确保了从电机捕获的噪声和振动信号的准确性和可靠性…...

编码器是什么,以光电编码器为例,说明一下光电编码器的名字由来,结构,原理,特点,用处

问题描述&#xff1a; 问题解答&#xff1a; 定义&#xff1a;编码器是一种测量角度、位置、速度等物理量的传感器&#xff0c;它可以将物理量转换成电信号&#xff0c;以便计算机或控制系统进行处理和控制。编码器通常由码盘和光电转换器组成&#xff0c;码盘上刻有若干条码道…...

MySQL:主从复制

准备两台服务器&#xff1a;安装好mysql mysql1&#xff1a;192.168.2.222 master mysql2&#xff1a;192.168.2.226 slave 1、主从服务器分别作以下 1.1、版本一致 1.2、初始化表&#xff0c;并在后台启动mysql 1.3、修改root的密码 2、修改主服务器master #vi /etc/my…...

【K8S 二进制部署】部署Kurbernetes的网络组件、高可用集群、相关工具

目录 一、K8S的网络类型&#xff1a; 1、K8S中的通信模式&#xff1a; 1.1、、pod内部之间容器与容器之间的通信 1.2、同一个node节点之内&#xff0c;不同pod之间的通信方式&#xff1a; 1.3、不同node节点上的pod之间是如何通信的呢&#xff1f; 2、网络插件一&#xff…...

Ubuntu 常用命令之 locate 命令用法介绍

🔥Linux/Ubuntu 常用命令归类整理 locate命令是在Ubuntu系统下用于查找文件或目录的命令。它使用一个预先构建的数据库(通常由updatedb命令创建)来查找文件或目录,因此它的查找速度非常快。 plocate 安装 locate 不是 Ubuntu 系统的原生命令/功能,要想在 Ubuntu 系统中…...

java中file类常用方法举例说明

java中file类常用方法举例说明 当使用 java.io.File 类时&#xff0c;以下是一些常用方法的举例说明&#xff1a; 创建文件或目录&#xff1a; // 使用路径名创建File实例 File file new File("C:\\Users\\UserName\\Documents\\example.txt");// 使用父路径和子路…...

机器学习分类模型

机器学习常见分类模型及特点 机器学习常见分类模型优缺点 决策树模型 决策树&#xff08;Decision Tree&#xff09;是一类常见的机器学习方法&#xff0c;可应用于分类与回归任务&#xff0c;这里主要讨论分类决策树。决策树是基于树结构来进行决策的。下图是使用决策树来决定…...

LaTeX符号大全:打破排版的边界

LaTeX符号大全&#xff1a;打破排版的边界 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一起探索一门极富表现力的排版艺术——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函数时&#xff0c;是为了去除飞机后面变透明&#xff0c;当时当飞机到达边界的时候&#xff0c;会出现异常退出&#xff0c;这是因为drawAlpha函数不稳定&#xff0c;昨天试过制作掩码图&#xff0c;下载了一个ps,改的话&#xff0c…...

海康visionmaster-渲染控件:渲染控件加载本地图像的方法

描述 环境&#xff1a;VM4.0.0 VS2015 及以上 现象&#xff1a;渲染控件如何显示本地图像&#xff1f; 解答 思路&#xff1a;在 2.3.1 中&#xff0c;可以通过绑定流程或者模块来显示图像和渲染效果。因此&#xff0c;第一步&#xff0c; 可以使用在 VM 软件平台中给图像源模…...

【SD】一致性角色 - 同一人物 不同姿势 - 2

首先生成4张不同姿势的图片 masterpiece,high quality,(white background:1.6),(simple background:1.4),1gril,solo,black footwear,black hair,brown eyes,closed mouth,full body,glasses,jacket,long hair,long sleeves,lookig at viewer,plaid,plaid skirt,pleated shirt,…...

摩尔线程S80对于软件的支持

摩尔线程对软件的支持 时间&#xff1a;2024年1月1日 显卡型号&#xff1a;MTT S80 主板型号&#xff1a;七彩虹 igame z590 火神 V20 CPU&#xff1a; intel core i5 10400f 内存&#xff1a; 海盗船3600 16*2 存储&#xff1a; 致态1Tb nvme 显卡的驱动是最新的。 游戏 S…...

基数排序 RadixSort

基数排序是一种非比较型整数排序算法&#xff0c;其原理是将整数按位数切割成不同的数字&#xff0c;然后按每个位数分别比较。由于整数也可以表达字符串&#xff08;比如名字或日期&#xff09;和特定格式的浮点数&#xff0c;所以基数排序也不是只能使用于整数 . 动态演示 :…...

Maven下载和安装的详细教程

文章目录 一、Maven下载和安装1.1 下载 Maven1.2 配置环境变量 参考资料 一、Maven下载和安装 1.1 下载 Maven 打开 Maven 的官方网站Maven – Download Apache Maven&#xff0c;下载最新版本的 Maven 在可选择的版本中&#xff0c;不同版本的区别在于: binary是已经编译过的…...

申请虚拟VISA卡Fomepay教程

fomepay 用下面的注册链接直达 https://gpt.fomepay.com/#/pages/login/index?dS21BA1 或者扫描下面图片的二维码直达注册 注册后尽量随用随充值不建议放大量现金在里面。...

java常见面试题:什么是装箱和拆箱?装箱和拆箱有哪些应用场景

装箱和拆箱是计算机科学中常用的术语&#xff0c;主要用于描述将数据从一种类型转换为另一种类型的操作。 装箱是将值类型转换为引用类型的过程。在装箱时&#xff0c;需要了解编译器内部的操作。首先&#xff0c;在托管堆中分配好内存&#xff0c;分配的内存量是值类型的各个…...

【map】【滑动窗口】【字典树】C++算法:最长合法子字符串的长度

作者推荐 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本 本文涉及的基础知识点 C算法&#xff1a;滑动窗口总结 字典树 map 离线查询 map map可以分成有序(单调)map和无序(哈希)map。还可分成单键map和多键map&#xff08;允许重复的键&#xff09;。本文用…...

机器学习部分相关概念

数据集(Data Set)即数据的集合&#xff0c;每一条单独的数据被称为样本(Sample)。 对于每个样本&#xff0c;它通常具有一些属性(Attribute)或者特征(Feature)&#xff0c; 特征所具体取得值被称为特征值(Feature Value)。 西瓜数据集 色泽根蒂纹理青绿稍蜷模糊乌黑蜷缩清晰 …...

Apache DolphinScheduler 3.1.9 版本发布:提升系统的稳定性和性能

&#x1f680;我们很高兴宣布&#xff0c;Apache DolphinScheduler 的最新版本 3.1.9 已正式发布&#xff01;此版本在 3.1.8 的基础上进行了关键的 bug 修复和文档更新&#xff0c;共计修复了 14 个 bug 和改进了 3 个文档。 主要更新亮点 本次更新重点解决了以下几个关键问题…...

go-carbon v2.3.1 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库&#xff0c;支持链式调用。 目前已被 awesome-go 收录&#xff0c;如果您觉得不错&#xff0c;请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...

开展建设文明网站活动方案/可以免费投放广告的平台

for Text1 in cat uniq1 dofor Text2 in cat uniq2doif [ "$Text1" "$Text2" ]thenecho $Text1 >> thesamefidone done...

做设计太依赖网站素材/网络媒体发稿

概述在实际的业务场景应用中&#xff0c;我们经常要根据业务条件获取并筛选出我们的目标数据。这个过程我们称之为数据查询的过滤。而过滤过程使用的各种条件(比如日期时间、用户、状态)是我们获取精准数据的必要步骤&#xff0c;这样才能得到我们期望的结果。所以本章我们来学…...

自适应网站模板怎么做/阿里巴巴关键词排名优化

现代的CPU和主板都有节电技术&#xff0c;在CPU低负荷工作的会自动降频。如果需要临时设置主频和工作模式&#xff0c;可使用cpufreq手动调整。这个模式将在重启后失效&#xff0c;如果需要长期调整请修改/etc/sysconfig/cpuspeed。 一、检查内核加载 lsmod | grep "acpi_…...

崇州市微信端网站建/怎样下载优化大师

excel如何读取B列的数据类型和b列里的数据sum(b:b,"工具",a:a)EXCEL如何将表格的数据类型分类提取出来(提取筛选的数据类型)把C列的数据复制&#xff0c;到右边找一列空的列&#xff0c;粘贴进去。然后选中右边粘贴过来的这列、点顶部的&#xff1a;数据---删除重复项…...

那个公司做网站好/专注于品牌营销服务

namedtuple的需求&#xff1a; t (“kiosk”, ‘pts/0’, ‘localhost’) info {‘kiosk’ : { ‘name’: “kiosk”, ‘node’: ‘localhost’ }} 为元组的局限性&#xff1a;不能为元组内部的数据进行命名&#xff0c;所以往往我们并不知道一个元组所要表达的意义&#xff…...

在国外可以用高德地图吗/广东优化疫情防控措施

Qt5.5 QFileDialog类的使用方法 2017-01-13 15:15 632人阅读 评论(0) 收藏 举报分类&#xff1a;QT学习&#xff08;7&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] 头文件&#xff1a;#include <QFileDialog> Pro…...