文档章节

linux 命令-文本比较comm、diff、patch

编程三分钟
 编程三分钟
发布于 09/17 01:36
字数 698
阅读 25
收藏 0

本文原创首发于公众号:编程三分钟

今天学了三个文本比较的命令分享给大家。

comm

comm 命令比较相同的文本

$ cat char
a
b
c
$ cat chardiff
a
d
c

比如,我有两个文件charchardiff如上,略有不同,就可以用这个命令输出。

$ comm char chardiff
        a
b
c
    d
    c

如上,看起来输出的乱七八糟,他只是把两个文件按列把各自特有的输出,最后再输出共有的。 所以参数-1代表不输出第1列,也就是第2列和第3列。-2输出第1列和第3列,-3输出第1、2列的。参数比较废,看起来很费劲。

$ comm -1 char chardiff
    a
d
c
$ comm -12 char chardiff
a

comm命令比较笨,只能针对已经排序过的数据,如果没有排序过,像abcacb就会识别成仅仅a相同,暂时没想到比较好的使用场景。

diff

用到git的都知道git diff有多好用,虽然不如可视化页面直观,意在快速便捷。 下面是一个例子,char文件内容是abcchardiff2内容是bcd

$ diff -c char chardiff2
*** char	2019-09-16 21:40:47.000000000 +0800
--- chardiff2	2019-09-17 00:38:52.000000000 +0800
***************
*** 1,3 ****
- a
  b
  c
--- 1,3 ----
  b
  c
+ d

直接加了-c参数是为了更直观,感兴趣可以自己尝试去掉-c看看是什么效果。 *** 1,3 ****--- 1,3 ----代表1到3行,-代表删除行,+代表增加行,!代表更改行。 diff不仅可以临时对比两个文件之间的差异,但是和下一个命令组合起来才是其真正的用处。

patch 补丁

通常在更新几百万行的项目时,如果只有几行有变化,全部打包过来根本是不可能的,因为它太大了,而且全部拷过来也没有意义,最大的问题是人力难以对比。 在这之前我们需要生成一个补丁文件

$ diff -Naur folder1 folder2 > diff_file
$ ls folder1
char chardiff
$ ls folder2
char chardiff ip

得到补丁文件diff_file之后,发到与foler1版本一模一样的位置就可以更新成功了!

$ cd folder1
$ patch < diff_file
$ patch < diff_file
patching file chardiff
patching file ip

如果要回滚就加-R参数

$ patch -R < diff_file
patching file chardiff
patching file ip

它的参数如下 -p num :忽略几层文件夹 -E :如果发现了空文件,那么就删除它 -R :取消打过的补丁

image.png

© 著作权归作者所有

编程三分钟
粉丝 1
博文 8
码字总数 7131
作品 0
东城
私信 提问
patch 的用法简单介绍

原文地址 http://www.ibm.com/developerworks/cn/linux/l-diffp/index.html 1.diff diff以"行"为单位比较两个文本文件(也可以是目录比较),并将不同之处以某种格式输出到标准输出上;patch...

鉴客
2010/11/24
828
2
linux打patch简单示例

  在项目中,有些模块是开源的,没有源码或者不能改动源码,想要修复、优化里面的Bug,这时就需要用到patch了。 1. 生成patch     制作补丁有两种法法,diff和quilt。 1.1 diff方法制作...

老小白爱学习
2018/08/10
0
0
Drupal中的patch

Patch,英文意思是补丁,它并不是drupal的产物,它是一个linux的命令,说起它,不得不提linux的另一个命令:diff.在数学 领域,diff是用来对2个集合求差的,patch是求合,在linux命令中,diff用...

djf
2012/02/01
890
0
每天一个linux命令(42):diff 命令

diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的...

姬风
2014/04/05
323
0
Linux & Android生成和应用Patch文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/songkai320/article/details/82021937 若我们发现项目有bug,而自己没有代码提交权限,此时最合适的解决方法就...

中国思想史
2018/08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker 可视化管理 portainer

官网安装指南: https://portainer.readthedocs.io/en/latest/deployment.html docker-compose.yml 位置,下载地址:https://downloads.portainer.io/docker-compose.yml...

Moks角木
43分钟前
5
0
Spring Security 实战干货:必须掌握的一些内置 Filter

1. 前言 上一文我们使用 Spring Security 实现了各种登录聚合的场面。其中我们是通过在 UsernamePasswordAuthenticationFilter 之前一个自定义的过滤器实现的。我怎么知道自定义过滤器要加在...

码农小胖哥
46分钟前
7
0
常见分布式事务解决方案

1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源...

asdf08442a
47分钟前
3
0
influxdb continuous queries(cq)从入门到放弃

从前一篇influxdb的文章prometheus基于influxdb的监控数据持久化存储方案完成之后,就一直在折腾influxdb发布测试和生产环境的问题,经过接近2个月的验证,最终发现使用influxdb自带cq的方案...

狗陈
58分钟前
7
0
7.线程通信

在现实生活中,如果一个人团队正在共同完成任务,那么他们之间应该有通信,以便正确完成任务。 同样的比喻也适用于线程。 在编程中,要减少处理器的理想时间,我们创建了多个线程,并为每个线...

Eappo_Geng
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部