如何比较总文件

如何比较总文件

假设我有 2 个配置文件,例如: 文件 1:

smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes
virtual_gid_maps = static:5000

文件2:

virtual_gid_maps = static:5000
broken_sasl_auth_clients = yes
smtpd_sasl_authenticated_header = yes

如果你仔细观察,你会看到有一行以 开头,virtua_gid_*但文件 1 将其放在文件末尾,但文件 2 将其放在文件头。

假设我有两个文件,它们的行相同,位置不同,但位置对我来说并不重要,重要的是存在或不存在。

我如何比较我的文件?

答案1

如果位置不重要,您可以对文件进行排序,然后执行比较。您必须将排序后的文件保存在临时区域中。

sort file1 > /tmp/file1
sort file2 > /tmp/file2
diff /tmp/file1 /tmp/file2

您可能还想尝试vimdiff代替diff.

答案2

如果文件只有简单的<name> = <value>行(如您的示例),您可以执行以下操作:

$ cat file1 | sort > /tmp/sortedfile1
$ cat file2 | sort > /tmp/sortedfile2
$ diff /tmp/sortedfile1 /sortedfile2

只要周围有相同数量的空格,这就会起作用=

答案3

如果使用子 shell,则可以避免使用临时文件:

diff <(sort fileA) <(sort fileB)

另一个有用的程序是meld这是一个非常好的 GUI diff

相关内容