Hi!请登陆

comm、diff命令详解

2020-10-27 57 10/27

comm命令用来对两个己排序文件进行逐行比较.comm命令对两个已经排好序的文件进行比较.其中,filel和fileZ是已经排好序的文件.comm从这两个文件中读取正文行,进行比较,最后生成三列输出:仅在filel中出现的行,仅在file2中出现的行,在两个文件中都存在的行.如果文件名为"-"则表示从标准输入读取.

一般格式:

comm [-123] file1 file2

选项:

-123 选项1,2和3分别表示不显示comm输出中的第一列、第二列和第三列.

示例:

$ comm -12 m1 m2 (比较文件ml和m2,并且只显示它们共有的行)

diff命令比较两个文本文件,并找出它们的不同.它比comm命令完成更复杂的检查,并且不要求两个文件预先排好序.该命令逐行比较两个文件,列出它们的不同之处,并且告诉用户,为了使两个文件一致,需要修改它们的哪些行.如果两个文件完全一样,则该命令不显示任何输出.

一般格式:diff [选项] file1 file2

该命令输出的一般形式如下:

n1 a n3, n4 (表示把文件1的n1行附加到文件2的n3~n4行后,则二者相同)
nl,n2 d n3 (表示删除文件1的nl~n2行及文件2的n3行,则二者相同)
nl,n2 cn3, n4 (表示把文件l的nl~n2行改为文件2的n3~n4行,则二者相同)
这些行类似ed命令把文件file1转换成文件file2.字母(a, d和c)之前的行号(n1,n2)是针对文件file1的,其后面的行号(n3,n4)是针对文件file2的.字母a表示附加,字母d表示删除,字母c表示修改.

在上述形式的每一行的后面跟随受到影响的若干行,以"<"打头的行属于文件file1,以">"打头的行属于文件file2.diff命令能区分块特别文件、字符特别文件及FIFO(管道文件),不会把它们与普通文件进行比较.

选项:

-b 忽略空格造成的差别.例如,"How    are you"与"How are you    "被看做是相同的字符串.
-c 输出格式是带上下文的三行格式.
-Cn 输出格式是有上下文的n行格式.
-e 输出一个合法的ed脚本.
-i 忽略字母大小写的区别.
-r 当文件file1和文件file2都是目录时,递归比较找到的各子目录.

注意:如果用"一"表示文件flle1或文件file2,则意味着标准输入.如果file1或file2是目录,那么 diff将使用该目录中的同名文件进行比较.如果file1和file2都是目录,则diff会产生很多信息.如果一个目录中只有一个文件,则产生一条信息,指出该目录路径名和其中的文件名.

Tag:

相关推荐