diffとパッチについて読んだことがありますが、必要なものを適用する方法がわかりません。私はかなり簡単だと思うので、私の問題を示すためにこれらの2つのファイルを取ります:
a.xml
<resources>
<color name="same_in_b">#AAABBB</color>
<color name="not_in_b">#AAAAAA</color>
<color name="in_b_but_different_val">#AAAAAA</color>
<color name="not_in_b_too">#AAAAAA</color>
</resources>
b.xml
<resources>
<color name="same_in_b">#AAABBB</color>
<color name="in_b_but_different_val">#BBBBBB</color>
<color name="not_in_a">#AAAAAA</color>
</resources>
次のような出力が必要です(順序は関係ありません)。
<resources>
<color name="same_in_b">#AAABBB</color>
<color name="not_in_b">#AAAAAA</color>
<color name="in_b_but_different_val">#BBBBBB</color>
<color name="not_in_b_too">#AAAAAA</color>
<color name="not_in_a">#AAAAAA</color>
</resources>
マージには、次の単純なルールに沿ったすべての行が含まれている必要があります。
- ファイルの1つにのみある任意の行
- 行の名前タグが同じで値が異なる場合、2番目の値を取得します
私はこのタスクをbashスクリプト内に適用したいので、別のプログラムがより適している場合は、diffとパッチを完全に行う必要はありません
diff
どの行が一方のファイルにあり、もう一方のファイルにはないかを知ることができますが、行全体の粒度でのみです。patch
は、同様のファイル(同じファイルの異なるバージョン、または各変更の行番号と周囲の行が元のファイルと同じである完全に異なるファイル)に同じ変更を加える場合にのみ適しています。いいえ、このタスクには特に適していません。ご覧になりたいかもしれませんwdiff
が、ソリューションにはおそらくカスタムスクリプトが必要です。データはXMLのように見えるので、XSLツールを探したいかもしれません。