【发布时间】:2011-01-17 17:16:14
【问题描述】:
我想比较两个文件 [未排序] 文件 1 和文件 2。无论行号如何,我都想做 file2 - file1 [区别]? 差异不起作用。
【问题讨论】:
-
你考虑过排序然后比较吗?
-
差异不工作?差异应该工作。什么错误?
-
未编程...移至超级用户。
标签: unix
我想比较两个文件 [未排序] 文件 1 和文件 2。无论行号如何,我都想做 file2 - file1 [区别]? 差异不起作用。
【问题讨论】:
标签: unix
我通过 comm 得到了解决方案
comm -23 file1 file2
会给你想要的输出。
无论如何,文件都需要先排序。
【讨论】:
comm man page,它适用于按词法排序的文件。因此,您必须首先在文件上使用sort。
diff,也可以说comm -23 <(sort file1) <(sort file2)。
好吧,您可以先对文件进行排序,然后对排序后的文件进行比较。
sort file1 > file1.sorted
sort file2 > file2.sorted
diff file1.sorted file2.sorted
您还可以过滤输出以报告 file2 中 file1 中不存在的行:
diff -u file1.sorted file2.sorted | grep "^+"
如 cmets 所示,您实际上不需要对文件进行排序。相反,您可以使用进程替换并说:
diff <(sort file1) <(sort file2)
【讨论】:
diff <(sort file1) <(sort file2)。
在 unix 中有 3 个比较文件的基本命令:
cmp:此命令用于逐字节比较两个文件,当出现任何不匹配时,它会在屏幕上回显它。如果没有出现不匹配,我不会给出任何响应。
语法:$cmp file1 file2.
comm : 该命令用于查找一个可用但另一个不可用的记录
diff
【讨论】:
最简单的方法:使用 sort(1) 对文件进行排序,然后使用 diff(1)。
【讨论】: