diff3の「-A」と「-e」の他の出力をどのように理解していますか?

diff3の「-A」と「-e」の他の出力をどのように理解していますか?

ディフチルマニュアル言う、中diff3 -A mine older yours

'--show-all' ('-A') オプションは、衝突を角かっこで囲み、マージされていない変更だけでなく、 からolderまでのすべての変更を出力することを除けば、 '-e' オプションと同様に機能します。yours

3つのファイルがあり、各ファイルには4行の数字があります。

$ paste f1 f2 f3
0   0   1
2   1   2
2   3   3
4   5   6

マージされた変更がないため、両方ともマージされていない変更のみを出力する必要があります-A-e

-Aによる次のようなさまざまな出力をどのように理解しますか-eedを理解するには知識が不足しているようです-A。たとえば、このコマンドが出力の最後で何をしているのかわかりません-A。通常、aコマンドの後に追加する行が表示されますが、コマンドの後には行がないようです。

0a
<<<<<<< f1
.

ありがとうございます。


f2からの変更のうち、マージされていないf3変更は次のとおりです。

$ diff3 -e f1 f2 f3
1,4c
1
2
3
6
.

f2からのすべての変更f3(マージされていない変更とマージされた変更を含む)は次のとおりです。

$ diff3 -A f1 f2 f3
4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.

答え1

eddiff3 -A生成されたスクリプトをソースファイルに適用すると、実際に実行されている操作を確認できます。

$ diff3 -A f[123] >script.ed

patchここで使用していますが、書き込むことができますが、バッファをファイルに書き換えたり()端末から印刷したい場合は()スクリプトのed最後にコマンドを追加する必要があります。)w%p

$ patch f1 script.ed
Hmm...  Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
<<<<<<< f1
0
2
2
4
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3

これはファイルのこのビットの編集を表します。みんなこの特定の例では、ファイル)が競合です(<<<<<<<および間に「同封」されています>>>>>>>)。 (「My Files」)の内容とf1(「Old Files」と「Your Files」のそれぞれ)の内容を提供して、競合が何であるかを示します。f2f3

このコンテンツと生成されたコンテンツの違いは、生成されたスクリプトが可能な競合を無視してに変換されることdiff3 -eです。eddiff3 -ef1f3f2

$ diff3 -e f[123] >script.ed
$ patch f1 script.ed
Hmm...  Looks like an ed script to me...
Patching file f1 using Plan A...
done
$ cat f1
1
2
3
6

したがって、マニュアルに「衝突が含まれています」と書かれている場合、diffをパッチとして適用すると、対応する競合マークが結果ファイルに挿入されます。


その瞬間まで違いを読む、知らないと少し難しいですed

4a
||||||| f2
0
1
3
5
=======
1
2
3
6
>>>>>>> f3
.
0a
<<<<<<< f1
.

あなたのコメントの最後の部分は

0a
<<<<<<< f1
.

<<<<<<< f1編集中のファイルの上部にテキスト行を挿入します。これにより、diff自体にf1(パッチされたファイルの)元の内容を含める必要がなくなります。

関連情報