linux下comm命令
-
comm命令是Linux操作系统中的一个文本处理工具,用于比较两个已排序的文件,并按照指定的规则输出它们的共同行、唯一行以及不同行。它的基本语法如下:
comm [选项] 文件1 文件21. 输出共同的行:
使用comm命令时,可以通过选项控制输出哪些内容。例如,使用”-1″选项可以控制只输出文件1中存在的行,使用”-2″选项可以控制只输出文件2中存在的行,使用”-3″选项可以控制只输出在两个文件中共同存在的行。如果不使用任何选项,默认情况下comm命令将同时输出文件1和文件2中共同存在的行。2. 输出唯一的行:
通过”-1″和”-2″选项还可以让comm命令分别输出只存在于文件1或文件2中的行。使用”-1″选项将只输出文件1中存在的行,使用”-2″选项将只输出文件2中存在的行。3. 输出不同的行:
通过使用”-3″选项,comm命令可以输出在文件1和文件2中都存在的行。这些行通常是通过去除两个文件的共同行后剩余的行。示例:
假设文件1的内容为:
apple
banana
cherry
grape
orange文件2的内容为:
apple
banana
mango
watermelon执行命令:comm 文件1 文件2
输出结果:
apple
banana
cherry
grape
mango
orange
watermelon这里,共同存在的行是apple和banana,文件1中独有的行是cherry、grape和orange,文件2中独有的行是mango和watermelon。
总之,comm命令可以方便地对两个已排序的文件进行比较,并输出它们的共同行、唯一行以及不同行,是Linux系统中常用的文本处理工具之一。
2年前 -
comm命令是Linux操作系统中的一个文本处理工具,用于比较两个已排序的文件,并输出它们的交集、差异或并集。下面是comm命令的一些常用用法和选项:
1. 基本用法:
comm命令的基本使用语法如下:
comm [选项] 文件1 文件2该命令会将文件1和文件2中的文本逐行进行比较,并将比较结果输出。结果会分为以下三个列:
– 第一列:仅存在于文件1的行;
– 第二列:仅存在于文件2的行;
– 第三列:同时存在于文件1和文件2的行。2. 选项:
– -1, –nocheck-order:在比较时不检查行的排序。默认情况下,comm命令会假设输入文件已按字典序排序,但使用该选项可以禁用此检查。
– -2, –unique:只输出文件2中独有的行。
– -3, –output-delimiter=字符:指定输出结果的分隔符,默认为制表符。
– -i, –ignore-case:在比较时忽略大小写。
– -z, –zero-terminated:使用NUL字符而不是换行符作为行分隔符。3. 比较已排序文件:
comm命令主要用于比较已排序的文件。如果文件未排序,则输出结果将不准确。可以使用sort命令来对文件进行排序,然后再使用comm命令进行比较。4. 输出结果:
comm命令的输出结果可以通过重定向保存到文件,或者通过管道传递给其他命令进行进一步处理。可以使用sed、awk等命令对输出结果进行文本处理。5. 示例:
假设有两个文件file1和file2,它们的内容如下:
file1:
“`
apple
cat
dog
“`
file2:
“`
cat
dog
elephant
“`使用comm命令比较这两个文件:
“`
comm file1 file2
“`
输出结果为:
“`
apple
cat
dog
elephant
“`
第一列为空,表示file1中没有仅存在的行;第三列为空,表示file2中没有仅存在的行;第二列包含共同的行cat和dog。2年前 -
一、介绍comm命令
comm命令是Linux系统中的一个文本处理工具,用于比较两个已排序的文件,并根据比较结果输出结果。二、语法格式
comm命令的语法格式如下:
“`
comm [OPTION]… FILE1 FILE2
“`三、参数说明
comm命令支持以下参数:
– `–help`:显示帮助信息。
– `-1`:仅显示在FILE1中出现的行。
– `-2`:仅显示在FILE2中出现的行。
– `-3`:仅显示在FILE1和FILE2中都出现的行。
– `-i`:忽略大小写区别。
– `-u`:只显示在FILE1或FILE2中出现的唯一行。
– `-z`:使用NULL作为字段分隔符。
– `–check-order`:检查输入文件是否已排序,如果已排序则提高效率。
– `–nocheck-order`:不检查输入文件是否已排序。四、操作实例
1. 基本使用
首先,我们创建两个文件file1.txt和file2.txt,并分别添加一些内容:
“`
$ echo “apple” > file1.txt
$ echo “banana” >> file1.txt
$ echo “orange” > file2.txt
$ echo “banana” >> file2.txt
$ echo “grape” >> file2.txt
“`
然后,我们可以使用comm命令来比较这两个文件:
“`
$ comm file1.txt file2.txt
“`
输出如下:
“`
apple
banana
orange
grape
“`
输出结果的第一列表示只在file1.txt中出现的行,第二列表示只在file2.txt中出现的行,第三列表示在两个文件中都出现的行。2. 显示不同的行
如果我们只想显示在file1.txt和file2.txt中都出现的行,可以使用`-3`参数:
“`
$ comm -3 file1.txt file2.txt
“`
输出如下:
“`
orange
“`
这样就只显示了在两个文件中都出现的行。3. 忽略大小写区别
使用`-i`参数可以忽略大小写区别,例如:
“`
$ echo “Apple” > file1.txt
$ echo “BaNana” >> file1.txt
$ echo “oRANGE” > file2.txt
$ echo “Banana” >> file2.txt
$ echo “Grape” >> file2.txt
$ comm -i file1.txt file2.txt
“`
输出如下:
“`
apple
banana
orange
grape
“`
可以看到,输出结果中大小写不敏感,并且并不会对大小写不同的行进行合并。4. 只显示唯一行
使用`-u`参数可以只显示在file1.txt或file2.txt中出现的唯一行,例如:
“`
$ comm -u file1.txt file2.txt
“`
输出如下:
“`
apple
“`
这样就只显示了只在file1.txt中出现的唯一行。五、总结
通过以上示例,我们了解了comm命令的基本使用和一些常用参数。comm命令是一个简单但实用的文本处理工具,可以帮助我们比较并处理已排序的文件,非常适合在Linux系统中进行文件数据的对比和处理。2年前