Saya telah membaca tentang diff dan patch tetapi saya tidak tahu bagaimana menerapkan apa yang saya butuhkan. Saya kira ini cukup sederhana, jadi untuk menunjukkan masalah saya ambil dua file ini:
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>
Saya ingin memiliki output, yang terlihat seperti ini (pesanan tidak masalah):
<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>
Penggabungan harus berisi semua baris di sepanjang aturan sederhana ini:
- setiap baris yang hanya ada di salah satu file
- jika suatu baris memiliki tag nama yang sama tetapi memiliki nilai yang berbeda, ambil nilainya dari yang kedua
Saya ingin menerapkan tugas ini di dalam skrip bash, jadi tidak perlu harus dilakukan dengan diff dan patch, jika program lain lebih cocok
diff
dapat memberi tahu Anda baris mana dalam satu file tetapi tidak pada yang lain, tetapi hanya pada rincian seluruh baris.patch
hanya cocok untuk membuat perubahan yang sama untuk file yang sama (mungkin versi berbeda dari file yang sama, atau file yang sama sekali berbeda di mana namun nomor baris dan garis sekitarnya untuk setiap perubahan identik dengan file asli Anda). Jadi tidak, mereka tidak cocok untuk tugas ini. Anda mungkin ingin melihatnyawdiff
tetapi solusinya mungkin memerlukan skrip khusus. Karena data Anda terlihat seperti XML, Anda mungkin ingin mencari beberapa alat XSL.