• Linux系列之比较命令


    前言

    Linux中有两个比较命令,它们分别是 comm 和 diff ,在比较文本文件的版本时通常很有用。本文介绍它们的区别和简单用法。

    comm命令

    该命令对两个文本文件进行比较,并显示每个文件独有的行和它们共有的行。

    假设我们有两个文件:

     ~~java思维导图获取路径~~

    当我们运行 comm file1.txt file2.txt 时,我们会得到:

     

    在我看来, comm 的输出有些难看,但它是三列。请原谅我糟糕的线条:

     

    第一列包含第一个文件参数特有的行,第二列包含第二个文件参数特有的行,第三列包含两个文件共有的行。

    我们可以通过使用选项 -n ,来选择隐藏指定的列,其中 n 可以是1、2或3。假设我们只想输出两个文件共有的行,我们可以使用 comm -12 file1.txt file2.txt 。

     

    diff命令

    diff 是一个更加复杂的工具。它支持多种输出格式,并有能力一次处理大量的文本文件集。 diff 经常被用来创建 diff 文件(补丁),这些文件被 path 等程序用来将一个或多个文件的一个版本转换成另一个版本。让我们在之前的两个文件上运行 diff : diff file1.txt file2.txt 。

     

    这是默认的输出样式。在该格式中,每组变化之前都有一个变化命令,以 range operation range 的形式描述将第一个文件转换为第二个文件所需的位置和变化类型。

    首先来看:

    1d0
    < a

    这告诉我们必须删除 file1 的第一行,也就是带a的那一行。

    接下来看:

    4a4
    > e

    这告诉我们,我们必须在第一个文件里添加一行,在第四行的位置。然后告诉我们在哪一行添加 > e 。

    我知道这是令人困惑的,坦白说,默认样式没有使用太多的上下文格式和统一格式,让我们看看那些解释更多。让我们来看看这些,并作进一步解释。

    我们可以通过添加 -c 选项来使用上下文格式:

    diff -c file1.txt file2.txt

     ~~更多java资料点击此处获取~~

    在顶部我们可以看到,两个文件的名称以及时间戳,第一个文件使用星号标记,第二个文件使用破折号标记。 diff 将使用星号或破折号来让我们知道,它在整个列表的其余部分谈论的是哪个文件。

    接下来我们会看到一行星号,这仅仅是为了格式化。

    然后我们得到一系列的变化,在第一组变化中,我们可以看到:

    *** 1,4 ****

    这意味着第一个文件中的第1行到第4行。

    然后可以看到:

    - a
      b
      c
      d

    这就是文件的内容。只不过在 a 前面有个 - ,这意味着我们要删除它。

    标志含义
    blank不需要任何改变
    (-)需要删除行
    (+)需要添加行
    !需要改变行

    在第一组变化中,我们可以看到带有 -a 的行需要从第一个文件中删除。第二组变化为:

    --- 1,4 ----
      b
      c
      d
    + e

    ---1,4---- 是第二个文件的范围, + e 意味着我们需要添加该行到第一个文件中,记住我们的目标是让第一个文件匹配第二个文件。

    我们也可以使用统一格式,它与格式上下文类似,但是更简洁。它消除了上下文的重复行。 diff -u file1.txt file2.txt 。

     

     

  • 相关阅读:
    EasyNVR视频边缘计算网关硬件设备拔电关闭后不能自动重启的原因分析
    【Python 千题 —— 基础篇】分解数据
    Web前端大作业—电影网页介绍8页(html+css+javascript) 带登录注册表单
    【技巧】Windows 下安装 ES 报错:Permission denied
    centos7中如何安装gdal最好?
    Windows 安装 Python 环境&PyCharm
    人生重开模拟器(Python实现)
    MybatisPlus整合SpringBoot
    Scanf 不安全报错问题
    【特刊征稿】SI特刊“可计算情感”征稿(综合性期刊IF=2.8)
  • 原文地址:https://blog.csdn.net/lt_xiaodou/article/details/126173512