微软 wordpress Ubuntu apache linux centos Firefox 开源 程序员 Python java shell HTML5 Windows Android mysql php google nginx linux命令

比较文件内容的命令:comm、diff

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会产生很多信息。如果一个目录中只有一个文件,则产生一条信息,指出该目录路径名和其中的文件名。

延伸阅读

评论