【问题标题】:compare two files in UNIX比较 UNIX 中的两个文件
【发布时间】:2011-01-17 17:16:14
【问题描述】:

我想比较两个文件 [未排序] 文件 1 和文件 2。无论行号如何,我都想做 file2 - file1 [区别]? 差异不起作用。

【问题讨论】:

  • 你考虑过排序然后比较吗?
  • 差异不工作?差异应该工作。什么错误?
  • 未编程...移至超级用户。

标签: unix


【解决方案1】:

我通过 comm 得到了解决方案

comm -23 file1 file2 

会给你想要的输出。

无论如何,文件都需要先排序。

【讨论】:

  • 根据comm man page,它适用于按词法排序的文件。因此,您必须首先在文件上使用sort
  • amalloy's comment表示diff,也可以说comm -23 <(sort file1) <(sort file2)
【解决方案2】:

好吧,您可以先对文件进行排序,然后对排序后的文件进行比较。

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)

【讨论】:

  • 顺便说一下,bash 有一个将前三个命令放在一起的快捷方式:diff &lt;(sort file1) &lt;(sort file2)
【解决方案3】:

在 unix 中有 3 个比较文件的基本命令:

  1. cmp:此命令用于逐字节比较两个文件,当出现任何不匹配时,它会在屏幕上回显它。如果没有出现不匹配,我不会给出任何响应。 语法:$cmp file1 file2.

  2. comm : 该命令用于查找一个可用但另一个不可用的记录

  3. diff

【讨论】:

  • 在此之上添加,cmp 仅用于已排序的数据。
【解决方案4】:

最简单的方法:使用 sort(1) 对文件进行排序,然后使用 diff(1)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2013-09-25
    • 1970-01-01
    • 2016-10-23
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多