linux之文本比较工具

文本比较工具常见的有:

diff 以行为单位,常用在ASCII纯文本文件的比较上,常用于同一文件(软件)新旧版本之间的差异比较上

cmp 比较两个文件,以字节为单位,使用较少

这里主要介绍一下diff的用法和后续的patch 命令

[root @localhost ~]#mkdir -p /tmp/vitest   #创建目录
[root @localhost ~]#cd /tmp/vitest
[root @localhost vitest]#cp /etc/passwd passwd.old
[root @localhost vitest]#cat /etc/passwd | sed -e '4d' -e '6c no six line' > passwd.new

注意:sed 后面接超过两个以上的动作时,每一个动作前都要加上-e

现在来比较一下两个文件的区别,如何使用 diff

[root @localhost ~]#diff [-bBi] from-file to-file

参数解析:

-b   忽略一行当中有多个空白的差异,如 l Love 与  I         Love的差异

-B   忽略空白行的区别

-i   忽略大小写的差异

from-file 作为欲比较的文件,to-file作为基准文件,from-file额to-file可以与 - 替换,表示stanard input之意

现在来比较 passwd.old 和 passwd.new 的差异

[root @localhost vitest]#diff passwd.old passwd.new

解析:依次是,左边第4行被删除,基准是右边的第3行,注意这里的<表示左边的意思

                        左边第6行被替换成右边的第5行

                        右边 “>”第5行内容

新建的passwd.old和passwd.new之间是两个不同的版本,如果要软件升级怎么办?就是将旧的文件升级为新的文件,可以先比较新旧版本,再将区别文件制作成不定文件,再由补丁文件更新旧文件

[root @localhost vitest]#diff -Naur passwd.old passwd.new > passwd.patch
[root @localhost vitest]#cat passwd.patch

以行为单位,找到不一样的地方,新文件看到-会删除,看到+会增加。那如何将旧文件更新为新的内容呢,就是讲passwd.old文件更新为passwd.new文件

[root @localhost vitest]#patch -pN < patch.file  #更新
[root @localhost vitest]#patch -R -pN < patch.file  #还原

参数解析:

-p 后面的N表示取消第几层目录的意思

-R 表示还原,将新的文件还原成旧的文件

现在,将刚才制作的patch file用来更新就版本

[root @localhost vitest]#patch -p0 < passwd.patch
[root @localhost vitest]#ll passwd*

版本回退到原来的旧版本呢


关于这里为什么是 -p0,因为我们比较新旧版本的数据是在同一个目录下,因此不需要减去目录了



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值