Linux diffコマンドは正しい比較を表示しません。

Linux diffコマンドは正しい比較を表示しません。

diffコマンドを使用して正しい比較テストを表示する方法を提案するには、助けが必要です。ファイルが2つあります。

ファイルA:

2            1
3            4166
4            1186
5            14318
6            2451
7            64
10           3
11           18
20           5

ファイルB:

3            3990
4            1144
5            14368
6            2439
7            64
10           3
11           18
20           5

並列比較を表示するためにこの方法でdiffコマンドを実行すると、出力が期待したものとは異なります。

diff -y -W 60 FileA FileB

出力は次のとおりです

2            1               |  3            3992
3            4166            |  4            1144
4            1186            |  5            14372
5            14318           |  6            2439
6            2451            <
7            64                 7            64
10           3                  10           3
11           18                 11           18
20           5                  20           5

予想される出力は次のようになります。

2            1               <
3            4166            |  3            3992
4            1186            |  4            1144
5            14318           |  5            14372
6            2451            |  6            2439
7            64                 7            64
10           3                  10           3
11           18                 11           18
20           5                  20           5

つまり、FileBの最初の行がありませんが、diffはそれをキャプチャしません。この問題を解決するのに役立ちますか?

答え1

これを比較する方法はいくつかあります

foo
bar

これに関して

baz

ラインを比較して。あなたはそう言うことができます

  1. foo最初のファイルbarbazは異なる行にのみあります。
  2. またfooはとは、最初のファイルでのみbaz異なる行です。bar
  3. または、最初のファイルでのみ、2番目のファイルでのみ可能ですfoobarbaz

すべての説明は本当です。最初の2つはdiff -y書式の使用法でそれぞれ2行を占め、3番目は3行を占めるので、少し優れています。

この場合、diff -y3つではなく2つの行を作成することをお勧めします。ただし、まだ選択できる2つの説明があります。

この変更は1つの文字しか変更しませんが、同様の行の概念がないため、最初の説明(bar置き換えられた部分)が気に入ります。 2 行は異なるか異なります。bazdiff

あなたの例では、5つの線を4つの異なる線と比較するために、次のように仮定できます。どの5行のうち5行は最初のファイルに固有で、残りの4行はそれに対応します。最初の行が削除されたと言われ、5行目が削除されたとdiff言われました。どちらの方法も有効です。

線の上で働くからでdiffあり、部分的にしか変わらない線の概念がないからです。

私はそれを試して、wdiffテキストで動作します。このツールは、32つのファイルを同じように4識別できます。しかし、出力が異なる別のツールです。56

関連情報