专栏首页技术面面观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命令比较笨,只能针对已经排序过的数据,如果没有排序过,像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 :取消打过的补丁

本文分享自微信公众号 - 编程三分钟(coding3min),作者:小熊爱编程

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 三分钟手操自己的yum源

    上次就想手操yum源了,考虑到有的朋友没接触过,直接写成了yum源的科普,活活憋了我一个星期,现在我们快快开始。

    编程三分钟
  • golang 结构体的思考

    小熊工作做不完了,周末又要加班了, c++ 项目好不容易在不同的指令集编译出来,结果一跑就挂,连日志都没有,难受!

    编程三分钟
  • 撤销远程提交-每天三分钟玩转Git (6)

    要是我们"不小心"把骂老板的话给提交到远程了,马上其他同事都要看到了,要是被发现就全完了,这个时候我们还来得及撤销吗?

    编程三分钟
  • 棋盘上的数学里程碑

    大数据文摘
  • 测试技能扩展 | Nginx知识

    nginx几乎是众多大型网站必用技术, 大多数情况下, 我们不需要亲自去配置,但了解他在应用程序中的角色, 以及如何解决这些问题是非常有帮助的.

    louiezhou001
  • PMI-ACP 敏捷项目管理5——评估价值与规划价值

    业务价值可以通过商业论证进行评估,通常会通过常用的财务术语进行评估。商业论证开发是敏捷项目管理中重要的起步点。商业论证是对项目的构想、目标、达到目的的策略、重大...

    隔壁老李头
  • 机器学习--Numpy基础(二)

    用户5745385
  • 半导体企业为何成为科创板的“宠儿”?

    刚刚过去的7月,在上海市市委书记李强、证监会主席易会满、上海证券交易所理事长黄红元的见证下,科创板正式开板,坐在下面的25家企业成为备受关注的新星。

    镁客网
  • 推荐一个便捷好用的内网穿透工具lanproxy

    薛定喵君
  • Day5网络流

    算法 无源汇上下界可行流 ?  先强制流过l的流量 从s到每个正权点连流量为l的流量  从每个负权点向t连-l的流量 如果容量为0,则不连边 有源汇上下界最大流...

    attack

扫码关注云+社区

领取腾讯云代金券