我感觉你这个要求太特殊了。因为据我所知linux中的关于文件比较的命令没有提供给你这么多功能。你可以这么一步步的来。写一个shell脚本假设两个文件1.txt 2.txt第一条命令$diff -urN 1.txt 2.txt > diff.patch生成出来的diff.patch就是两个文件中不同的记录。你如果需要加上你后面的“希望比较除了这行的其他内容......”等等要求的话,用其它要求做处理就行了。附带,你可以先grep出带@的行,计算出在哪儿改的,改了哪几个字符至于空格和制表符,我想sed就能完成了。看看 有没有这个命令xxdiff file1 file2 xxdiff is a graphical file and directories comparison and merge tool.It can be used for viewing the differences between two or three files, or two directories, and can be used to produce a merged version. The texts of the two or three files are presented side by side with their differences highlighted with colors for easy identification.MAN DIFF MAN COMM看看LINUX系统帮助的确会有这个问题,但尝试了好一阵后发现,实际上也不是问题。要解决此问题,加个选项--suppress-common-lines即可。diff -wy --suppress-common-lines a.txt b.txt或者:sdiff -w --suppress-common-lines a.txt b.txt为什么说不是问题呢?看看下图这个例子(a.txt中包含tab和空格,b.txt里包含空格)。得出的结论就是:加了-y选项后,无论行内容是否相同都会打印。但注意看一下,行内容不相同的情况,两端打印时中间会有一个竖线分隔。加了-w选项后,比较结果其实是完全相同的,不存在有竖线分隔的两端打印,从diff命令返回值(通过$?取得)也可以看出。所以,想到用--suppress-common-lines选项抑制相同行的输出。