文本比较工具常见的有:

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,因为我们比较新旧版本的数据是在同一个目录下,因此不需要减去目录了

linux之文本比较工具相关推荐

  1. linux 那些文本工具,linux之文本比较工具

    文本比较工具常见的有: diff 以行为单位,常用在ASCII纯文本文件的比较上,常用于同一文件(软件)新旧版本之间的差异比较上 cmp 比较两个文件,以字节为单位,使用较少 这里主要介绍一下diff ...

  2. 10款最佳的Linux文件比较工具

    https://www.cnblogs.com/logsharing/p/7986825.html https://www.scootersoftware.com/download.php 1前言 程 ...

  3. gnome硬盘分析_三款基于GUI和终端的实用Linux磁盘扫描工具

    [51CTO.com快译]扫描计算机硬盘主要出于两个原因:一个原因是分析硬盘,找出文件系统的不一致或错误.引起这些问题的可能因素包括:持续的系统崩溃,关键的系统软件关闭不当,更主要的是破坏性程序(比如 ...

  4. 【linux】Valgrind工具集详解(八):Memcheck命令行参数详解

    [linux]Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释. Memcheck命令行选项 –leak-check=<no| ...

  5. linux 命令行 过滤,利用linux命令行工具进行文本行过滤

    在日常工作中会遇到需要筛选过滤要查看的日志等文本文件的任务,例如需要查看日志文件的最后几行等. 下面总结一下常见的对文本行过滤的方法. 常用命令行工具 接下来主要使用的是head,tail,sed和a ...

  6. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  7. 实用!五款新型 Linux 命令行工具

    使用新的替代工具来改进旧的命令行工具. 作者 | Ricardo Gerardi 译者 | 弯月,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 在Linux/Unix系统 ...

  8. Linux漏洞建议工具Linux Exploit Suggester

     Linux漏洞建议工具Linux Exploit Suggester 在Linux系统渗透测试中,通常使用Nessus.OpenVAS对目标主机进行扫描,获取目标主机可能存在的漏洞.如果无法进行漏洞 ...

  9. Linux网络常用工具分类介绍

    Linux网络命令较多,单纯的介绍网络命令的用法也没什么意思.本文将常见的网络命令进行分类,并做出思维导图,对每个分类的命令选择性的介绍其作用.常见选项和用法举例.BTW,不建议记住所有命令,了解一下 ...

最新文章

  1. 从Java类库看设计模式
  2. 干货丨机器学习必知的15大框架
  3. 会计的思考(41):会计的领悟—每一位业务骨干都是优秀的管理会计师
  4. win7/10 画图程序按宽度高度mm cm精确调整图片尺寸
  5. 1743. 从相邻元素对还原数组
  6. Linux常用命令大全(归类)
  7. php中系统函数的特征,老鸟需要知道的一些php系统类函数
  8. ios苹果应用ipa一键签名工具_ios签名何以做到不越狱不上架也能安装ipa文件?
  9. Excel2007文件XML
  10. 2021年边缘计算融资汇总
  11. 视壮提前祝大家国庆快乐!
  12. 烟雨PHP图床程序源码
  13. C语言:浮点型的基本知识
  14. 2021年电工杯B体详细思路分析
  15. 基于FPGA的频率计
  16. ffmpeg解析视频的每一帧(java )
  17. safari浏览器在使用videojs-contrib-quality-levels.js 播放视频时 清晰度失效, 报错Unhandled Promise Rejection: AbortError
  18. IFE2018-DAY05
  19. 古希腊悲剧《美狄亚》(2)
  20. ecmall mysql版本_ECMall的MySQL数据调用的简单方法

热门文章

  1. 解决MySQL报错ERROR 2002 (HY000)【转】
  2. Binary Tree Level Order Traversal
  3. 6kzz整合ueditor
  4. NER数据增强、badcase处理、数据优化
  5. C++ Primer 5th笔记(chap 16 模板和泛型编程)转发
  6. 石墨烯区块链(2)核心功能
  7. 区块链BaaS云服务(17)纸贵科技Z-BaaS“合约中心”
  8. 数据结构与算法——树的广度优先遍历
  9. optee中断处理的介绍(概念篇)
  10. 防止Stack smash的技术