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

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

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

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


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命令比较笨,只能针对已经排序过的数据,如果没有排序过,像abc和acb就会识别成仅仅a相同,暂时没想到比较好的使用场景。


diff


用到git的都知道git diff有多好用,虽然不如可视化页面直观,意在快速便捷。下面是一个例子,char文件内容是abc,chardiff2内容是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 :取消打过的补丁

相关文章
|
2月前
|
Linux 网络安全 数据安全/隐私保护
Linux 超级强大的十六进制 dump 工具:XXD 命令,我教你应该如何使用!
在 Linux 系统中,xxd 命令是一个强大的十六进制 dump 工具,可以将文件或数据以十六进制和 ASCII 字符形式显示,帮助用户深入了解和分析数据。本文详细介绍了 xxd 命令的基本用法、高级功能及实际应用案例,包括查看文件内容、指定输出格式、写入文件、数据比较、数据提取、数据转换和数据加密解密等。通过掌握这些技巧,用户可以更高效地处理各种数据问题。
133 8
|
27天前
|
Linux Shell
Linux 10 个“who”命令示例
Linux 10 个“who”命令示例
53 14
Linux 10 个“who”命令示例
|
7天前
|
Linux
linux查看目录下的文件夹命令,find查找某个目录,但是不包括这个目录本身?
通过本文的介绍,您应该对如何在 Linux 系统中查看目录下的文件夹以及使用 `find` 命令查找特定目录内容并排除该目录本身有了清晰的理解。掌握这些命令和技巧,可以大大提高日常文件管理和查找操作的效率。 在实际应用中,灵活使用这些命令和参数,可以帮助您快速定位和管理文件和目录,满足各种复杂的文件系统操作需求。
30 8
|
16天前
|
Ubuntu Linux
Linux 各发行版安装 ping 命令指南
如何在不同 Linux 发行版(Ubuntu/Debian、CentOS/RHEL/Fedora、Arch Linux、openSUSE、Alpine Linux)上安装 `ping` 命令,详细列出各发行版的安装步骤和验证方法,帮助系统管理员和网络工程师快速排查网络问题。
102 20
|
17天前
|
网络协议 Linux 应用服务中间件
kali的常用命令汇总Linux
kali的常用命令汇总linux
44 7
|
2月前
|
Linux 数据库
Linux中第一次使用locate命令报错?????
在Linux CentOS7系统中,使用`locate`命令时出现“command not found”错误,原因是缺少`mlocate`包。解决方法是通过`yum install mlocate -y`或`apt-get install mlocate`安装该包,并执行`updatedb`更新数据库以解决后续的“can not stat”错误。
36 9
|
2月前
|
监控 网络协议 Linux
Linux netstat 命令详解
Linux netstat 命令详解
|
2月前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
159 3
|
2月前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
76 4
|
2月前
|
Linux
在 Linux 系统中,`find` 命令
在 Linux 系统中,`find` 命令
40 1