当前位置: 首页 > Linux

Linux系列比较命令

时间:2023-04-06 02:22:17 Linux

前言Linux中有comm和diff两个比较命令,在比较文本文件的版本时经常有用。本文介绍它们的区别和简单使用。comm命令该命令比较两个文本文件并显示每个文件独有的行和它们共有的行。假设我们有两个文件:当我们运行commfile1.txtfile2.txt时,我们得到:在我看来,comm的输出有点难看,但它是三列的。请原谅我的错误行:第一列包含第一个文件参数特有的行,第二列包含第二个文件参数特有的行,第三列包含两个文件共有的行。我们可以使用选项-n选择隐藏指定的列,其中n可以是1、2或3。假设我们只想输出两个文件共有的行,我们可以使用comm-12file1.txtfile2.txt。diff命令diff是一个更复杂的工具。它支持多种输出格式,并能够一次处理大量文本文件。diff通常用于创建差异文件(补丁),路径等程序使用这些文件将一个或多个文件的一个版本转换为另一个版本。让我们对前两个文件运行diff:difffile1.txtfile2.txt。这是默认的输出样式。在这种格式中,每组更改之前都有一个更改命令,采用范围操作范围的形式,描述将第一个文件转换为第二个文件所需的位置和更改类型。先看:1d0e这告诉我们必须在第一个文件中添加一行,在第四行的位置。然后告诉我们在哪一行添加>e。我知道这很令人困惑,坦率地说,默认样式不使用太多上下文格式和统一格式,让我们看看这些解释更多。让我们看看这些并进一步解释。我们可以通过添加-c选项来使用上下文格式:diff-cfile1.txtfile2.txt在顶部我们可以看到,两个文件的名称和时间戳,第一个用星号标记,第二个使用破折号分数。diff将使用星号或破折号让我们知道它在列表的其余部分中谈论的是哪个文件。接下来我们看到一行星号,这只是为了格式化。然后我们得到一系列变化,在第一组变化中,我们可以看到:***1,4****表示第一个文件中的第1到4行。然后你可以看到:-abcd这是文件的内容。只是a前面有一个-,表示我们要删除它。Flag意思是空白不需要任何更改(-)需要删除行(+)需要添加行!需要更改行在第一组更改中,我们可以看到需要从第一个文件中删除带有-a的行。第二组变化是:---1,4----bcd+e---1,4----是第二个文件的范围,+e表示我们要在第一个文件中加上这一行文件,记住我们的目标是让第一个文件匹配第二个。我们还可以使用统一格式化,它类似于格式化上下文,但更简洁。它消除了上下文的重复行。diff-u文件1.txt文件2.txt。