linux命令对比两个文件comm
-
在Linux中,我们可以使用`comm`命令来对比两个文件的内容。`comm`命令可以按行比较两个已排序的文件,并根据比较结果生成相应的输出。
`comm`命令的基本用法是:`comm [OPTION]… FILE1 FILE2`。其中,`FILE1`和`FILE2`是要进行对比的两个文件的名称。
`comm`命令的输出包含三个列,分别表示两个文件共有的行、只在第一个文件中存在的行以及只在第二个文件中存在的行。默认情况下,这些行是按字母顺序进行排序的。
下面是一个示例:
“`
$ cat file1.txt
apple
banana
orange
peach$ cat file2.txt
banana
grape
peach
watermelon$ comm file1.txt file2.txt
apple
orange
banana
grape
peach
watermelon
“`在上面的示例中,`file1.txt`和`file2.txt`是两个要对比的文件。`comm`命令的输出显示了这两个文件的共有行(banana和peach),以及只在第一个文件中存在的行(apple和orange)和只在第二个文件中存在的行(grape和watermelon)。
`comm`命令支持多种选项,下面是一些常用的选项:
– `-1`:只显示在第一个文件中存在的行;
– `-2`:只显示在第二个文件中存在的行;
– `-3`:只显示两个文件中共有的行;
– `-i`:不区分大小写进行比较;
– `-u`:只显示不重复的行。例如,如果我们只想显示只在第一个文件中存在的行,可以使用以下命令:
“`
$ comm -23 file1.txt file2.txt
apple
orange
“`通过比较两个文件,`comm`命令可以帮助我们找出两个文件之间的差异,从而更好地理解文件之间的关系。这对于比较配置文件、日志文件等非常有用。
2年前 -
Linux系统提供了许多命令来对比两个文件,其中比较常用的命令是”comm”。”comm”命令可以用来比较两个已排序的文件,并输出它们之间的差异。以下是对比两个文件的”comm”命令的一些常见使用方式和示例:
1. 对比两个文件的共同行:
`comm file1.txt file2.txt`这个命令会输出文件1和文件2中共有的行。输出结果有3列,第一列表示只在文件1中的行,第二列表示只在文件2中的行,第三列表示在两个文件中都存在的行。
例子:
假设文件1.txt内容如下:
“`
apple
banana
cherry
“`
文件2.txt内容如下:
“`
apple
cherry
date
“`
执行`comm file1.txt file2.txt`命令后,输出结果如下:
“`
banana
apple
cherry
date
“`2. 输出只存在于第一个文件中的行:
`comm -23 file1.txt file2.txt`使用”-23″选项可以使命令只输出只存在于第一个文件中的行。
例子:
假设文件1.txt内容如下:
“`
apple
banana
cherry
“`
文件2.txt内容如下:
“`
apple
cherry
date
“`
执行`comm -23 file1.txt file2.txt`命令后,输出结果如下:
“`
banana
“`3. 输出只存在于第二个文件中的行:
`comm -13 file1.txt file2.txt`使用”-13″选项可以使命令只输出只存在于第二个文件中的行。
例子:
假设文件1.txt内容如下:
“`
apple
banana
cherry
“`
文件2.txt内容如下:
“`
apple
cherry
date
“`
执行`comm -13 file1.txt file2.txt`命令后,输出结果如下:
“`
date
“`4. 不输出共同行:
`comm -3 file1.txt file2.txt`使用”-3″选项可以使命令不输出共同行。
例子:
假设文件1.txt内容如下:
“`
apple
banana
cherry
“`
文件2.txt内容如下:
“`
apple
cherry
date
“`
执行`comm -3 file1.txt file2.txt`命令后,输出结果如下:
“`
banana
date
“`5. 指定分隔符:
`comm -t file1.txt file2.txt`使用”-t”选项可以指定输出结果的分隔符为制表符。
例子:
假设文件1.txt内容如下:
“`
apple
banana
cherry
“`
文件2.txt内容如下:
“`
apple
cherry
date
“`
执行`comm -t file1.txt file2.txt`命令后,输出结果如下:
“`
banana
apple
cherry
date
“`总结:
“comm”命令可以用来比较两个已排序的文件,并输出它们之间的差异。通过不同的选项,可以实现输出共同行、只存在于一个文件中的行、不输出共同行以及指定输出结果的分隔符等功能。这些功能可以帮助用户快速找到两个文件之间的差异。2年前 -
在Linux中,”comm”命令是用来对比两个已经按行排序过的文件的。它可以显示出两个文件之间的差异,并且可以根据需要输出三种类型的行:只存在于第一个文件中的行、只存在于第二个文件中的行,以及两个文件中共存的行。
下面我们来具体介绍一下”comm”命令的使用方法和操作流程。
## 1. 命令格式
“`
comm [option] file1 file2
“`该命令有一些可选的选项,用于控制输出的格式和内容。下面是一些常用的选项:
– -1:只打印出在第一个文件中出现的行;
– -2:只打印出在第二个文件中出现的行;
– -3:只打印出两个文件中共存的行;
– –nocheck-order:不要求输入文件已按行排序;
– -i:忽略大小写。## 2. 操作流程
下面我们通过一个示例来演示一下”comm”命令的使用流程。
假设我们有两个文件:file1.txt和file2.txt。文件内容如下:
file1.txt:
“`
apple
banana
cherry
grape
mango
“`file2.txt:
“`
apple
cherry
kiwi
orange
“`我们想要对比这两个文件,并将结果输出到一个新文件中。首先,我们需要将两个文件按行排序:
“`
sort file1.txt > sorted_file1.txt
sort file2.txt > sorted_file2.txt
“`接下来,我们可以使用”comm”命令来对比这两个已经排序过的文件:
“`
comm sorted_file1.txt sorted_file2.txt > comparison.txt
“`以上命令将两个文件的对比结果输出到了comparison.txt文件中。
## 3. 对比结果
最后,我们来看一下对比结果。打开comparison.txt文件,可以发现它包含了三个字段,分别是:
– 第1列:只存在于第一个文件中的行;
– 第2列:只存在于第二个文件中的行;
– 第3列:两个文件中共存的行。根据我们的示例文件,comparison.txt的内容如下:
“`
banana
grape
mango
kiwi
orange
“`以上结果表示只在file1.txt中出现的行是”banana”和”mango”,只在file2.txt中出现的行是”kiwi”和”orange”,同时在两个文件中都存在的行是”grape”。
通过这样的方式,我们可以清楚地看到两个文件之间的差异,并可以根据需要选择输出的内容,方便我们进行进一步的处理和分析。
综上所述,”comm”命令是一种非常方便的用于对比两个文件差异的工具,通过按行排序和指定选项,我们可以得到清晰的对比结果。
2年前