comm
命令详解
comm
是 Linux 系统下用于比较两个已排序文件的命令行工具。它主要用于找出文件之间的差异或相同之处,例如:
两个文件中相同的行。
仅在第一个文件中的行。
仅在第二个文件中的行。
基本语法
comm [选项] 文件1 文件2
输出格式
comm
命令的输出分为三列,每列对应不同的比较结果:
第一列:仅在文件1中出现的行。
第二列:仅在文件2中出现的行。
第三列:在两个文件中都出现的行。
常用选项
选项 | 说明 |
---|---|
-1 |
不显示第一列(仅在文件1中出现的行)。 |
-2 |
不显示第二列(仅在文件2中出现的行)。 |
-3 |
不显示第三列(在两个文件中都出现的行)。 |
--check-order |
检查输入文件是否已排序,如果未排序则报错。 |
--nocheck-order |
不检查输入文件是否已排序(默认行为)。 |
--output-delimiter=STR |
使用指定的字符串 STR 作为列分隔符(默认是制表符)。 |
注意事项
comm
要求输入文件必须是已排序的。如果文件未排序,可以使用sort
命令先对文件进行排序:sort file1.txt -o file1.txt sort file2.txt -o file2.txt
如果文件未排序且未使用
--nocheck-order
,comm
可能会产生错误或不可预期的结果。
常用命令
输出两个文件的交集(相同的行):
comm -12 file1 file2
输出只在文件2中的行:
comm -13 file1 file2
输出只在文件1中的行:
comm -23 file1 file2
less
命令详解
less
是一个用于查看文件内容的命令行工具,支持分页显示和搜索。
常用选项
选项 | 说明 |
---|---|
-N |
显示行号。 |
+linenumber |
从指定行开始显示文件。 |
操作快捷键
快捷键 | 说明 |
---|---|
/ keyword |
向下搜索下一个 keyword 匹配项,输入关键词后按 Enter 键。 |
? keyword |
向上搜索上一个 keyword 匹配项,输入关键词后按 Enter 键。 |
n |
查找下一个匹配项。 |
N |
查找上一个匹配项。 |
↑ |
向上滚动一行。 |
↓ |
向下滚动一行。 |
b 或 PageUp |
向上滚动一页。 |
Space 或 PageDown |
向下滚动一页。 |
g |
跳到文件的开头。 |
G |
跳到文件的末尾。 |
= |
显示当前行号。 |
q |
退出 less 命令。 |
more
命令详解
more
是一个用于分页显示文本文件内容的命令。
常用选项
选项 | 说明 |
---|---|
+/STRING |
从匹配搜索字符串 STRING 的位置开始显示。 |
+num |
从文件的第 num 行开始显示内容。 |
示例
more +/search_string filename
sort
命令详解
sort
用于对文件内容进行逐行排序,支持多种排序规则。
常用选项
选项 | 说明 |
---|---|
-b |
忽略行首的空白字符。 |
-c |
检查输入是否已排序。 |
-n |
按数值大小排序。 |
-r |
以逆序(从大到小)排序。 |
-k <n> |
指定排序的字段。例如,-k 2 表示根据第二列排序。 |
-o <file> |
将输出写入指定文件。 |
-t <char> |
指定字段分隔符,默认为空格或制表符。 |
-u |
去重。配合 -c ,严格校验排序;不配合 -c ,则只输出一次排序结果。 |
--parallel=<n> |
指定线程数量,使用多线程排序。 |
注意事项
默认情况下,
sort
是区分大小写的。大写字母会排在小写字母前面。如果想忽略大小写,可以使用-f
选项。如果输入是非常大的文件,可能需要调整内存使用,可以使用
--buffer-size
选项来设置缓冲区大小。使用
-k
指定关键字列进行排序时,默认以空格分隔。可搭配-t
自定义字段分隔符。
总结
comm
用于比较两个已排序文件。less
和more
用于查看文件内容,less
功能更强大。sort
用于对文件内容进行排序,支持多种排序规则和优化选项。根据需求选择合适的工具和选项,可以高效处理文本文件。