ファイル全体を比較する方法

ファイル全体を比較する方法

たとえば、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はファイルの先頭に入れます。

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

サブシェルを使用すると、一時ファイルの使用を回避できます。

diff <(sort fileA) <(sort fileB)

別の有用なプログラムはmeldこれは非常に良いGUIですdiff

関連情報