GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana membandingkan tiga file di Linux menggunakan alat diff3

Dalam salah satu tutorial kami sebelumnya, kami membahas utilitas baris perintah Linux - dijuluki diff - yang memungkinkan Anda membandingkan dua file baris demi baris. Tetapi bagaimana jika persyaratannya adalah membandingkan bukan dua, tetapi tiga file? Ya, ada juga utilitas baris perintah Linux untuk ini, dan ini disebut dengan tepat diff3 .

Jika Anda telah mencari alat seperti itu, maka tidak perlu mencari lagi, karena dalam tutorial ini, kami akan menjelaskan penggunaan diff3 melalui contoh yang mudah dipahami.

But before we move forward, we would like you to know that all the examples mentioned in this tutorial have been tested on Ubuntu 14.04 with bash version 4.3.11(1), and the version of diff3 that we've used is 3.3.

Instal diff3

Alat diff3 kemungkinan akan diinstal secara default di sistem Anda - setidaknya di Ubuntu. Namun jika bukan itu masalahnya, jangan khawatir karena Anda dapat melakukannya dengan mudah dengan menginstal paket GNU Diffutils. Untuk instruksi tentang cara mengunduh dan menginstal paket di sistem Anda, buka di sini.

Penggunaan Diff3

Karena utilitas diff3 membandingkan tiga file, jadi untuk contoh penggunaan kita, kita harus mengambil tiga file yang akan kita berikan sebagai input ke alat.

Ini file1:

This is line1 with some change
This is line2
This is line3

Ini file2nya:

This is line1
This is line2
This is line3

Dan inilah file3:

This is line1
This is line2
This is line3

Jelasnya, jika kita melihat isi dari ketiga file ini, perubahannya hanya pada baris pertama dari file pertama. Jadi sekarang mari kita lihat bagaimana diff3 melaporkan perubahan ini.

Inilah cara kita dapat menggunakan diff3 dalam kasus ini:

diff3 file1 file2 file3

Dan inilah output yang dihasilkannya:

====1
1:1c
This is line1 with some change
2:1c
3:1c
This is line1

Anda dapat memahami output dengan cara berikut:

  • Baris pertama yang dimulai dengan empat tanda '=' dan diakhiri dengan angka '1' menyatakan perubahan ada di file pertama.
  • Di baris berikutnya, '1' pertama berarti file1; '1c' setelah titik dua 'berarti baris pertama berisi'. Baris sebenarnya ditampilkan di baris berikutnya dari output.
  • Demikian pula, 2:1c dan 3:1c berarti 'baris pertama berisi file2 dan file3'. Dan karena isi baris sama di kedua file, baris sebenarnya hanya ditampilkan sekali, di akhir output.

Agar lebih jelas, mari kita ambil kasus lain di mana perubahannya ada di file3.

Ini file1:

This is line1
This is line2
This is line3

Ini file2nya:

This is line1
This is line2
This is line3

Dan inilah file3:

This is line1 with some change
This is line2
This is line3

Perintahnya tetap sama:

diff3 file1 file2 file3

Dan inilah hasilnya:

====3
1:1c
2:1c
This is line1
3:1c
This is line1 with some change

Jadi output dalam hal ini dapat dipahami sebagai:

  • Perubahan ada di file3
  • Baik file1 dan file2 berisi "Ini adalah baris1" sebagai baris pertama
  • Sementara file3 berisi "Ini adalah baris1 dengan beberapa perubahan" sebagai baris pertamanya.

Itu semua tentang bagaimana laporan diff3 berubah dalam baris. Sekarang mari kita lihat bagaimana perilaku diff3 jika salah satu file berisi baris tambahan:

Sementara file1 dan file2 tetap sama, inilah file3:

This is line1
This is line2
This is line3
This is line4

Seperti yang jelas dari isinya, file3 sekarang berisi baris tambahan di akhir.

Mari kita jalankan perintah diff3 yang sama:

diff3 file1 file2 file3

Dan berikut adalah output yang dihasilkan dari perintah tersebut:

====3
1:3a
2:3a
3:4c
This is line4

Output dimulai dengan mengatakan bahwa perubahan ada di file3. Perubahan ada di baris keempat file3 (3:4c), yang merupakan baris baru sama sekali jika dibandingkan dengan file1 dan file2.

Apa yang kita diskusikan sejauh ini adalah beberapa kasus langsung. Mari kita ambil beberapa situasi yang sedikit rumit. Misalnya, pertimbangkan file1, file2, dan file3 sebagai berikut:

This is line1
This is line2 with some change
This is line3
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3 with some change

Jadi sekarang file1 dan file2 berisi perubahan, dan itu juga di baris yang berbeda. Mari kita lihat apa yang dihasilkan diff3 dalam kasus ini:

====
1:2,3c
This is line2 with some change
This is line3
2:2,3c
This is line2
This is line3
3:2,3c
This is line2
This is line3 with some change

Seperti yang Anda lihat pada output yang ditunjukkan di atas, baris pertama tidak berisi angka apa pun. Itu karena bukan hanya satu, tetapi beberapa file berisi perubahan sekarang. Untuk diff3, baris 2 dan 3 dari ketiga file tersebut sekarang berbeda. Itulah alasan mengapa alih-alih satu angka setelah titik dua (:), output sekarang berisi rentang - '2,3', yang berarti baris 2 hingga baris 3.

Mari kita ambil satu contoh lagi. Misalkan kali ini ketiga file berisi informasi berikut: 

This is line1
This is line2
This is line3
This is line4
This is line1
This is line2
This is line3
This is line1
This is line2
This is line3
This is line4
This is line5

Sekarang ketika perintah diff dijalankan, menghasilkan output berikut:

====
1:4c
This is line4
2:3a
3:4,5c
This is line4
This is line5

Di sini, jika Anda mencoba memahami, perintah diff3 mengatakan bahwa perubahannya terjadi setelah baris 3 di ketiga file. Sementara file1 berisi baris "Ini adalah baris4" sebagai baris keempat, file3 berisi "Ini adalah baris4" dan "Ini adalah baris5" sebagai baris keempat dan kelima, masing-masing. File2, di sisi lain, hanya memiliki 3 baris.

Jadi itu saja tentang dasar pengerjaan diff3. Untuk apa nilainya, inilah yang dikatakan dokumentasi resmi tentang alat ini:"Anda dapat menggunakan diff3 perintah untuk menunjukkan perbedaan di antara tiga file. Ketika dua orang telah membuat perubahan independen pada dokumen asli yang sama, diff3 dapat melaporkan perbedaan antara versi asli dan dua versi yang diubah, dan dapat menghasilkan file gabungan yang berisi perubahan kedua orang bersama-sama dengan peringatan tentang konflik.".

Kesimpulan

Kami baru saja menggores permukaan di sini, Diff3 mampu melakukan lebih banyak lagi. Misalnya, seperti yang ditunjukkan oleh dokumentasi resmi, Anda juga dapat menggunakannya untuk menggabungkan perubahan. Selain itu, ada banyak opsi baris perintah yang memungkinkan Anda menyesuaikan keluaran perintah serta mengakses beberapa fitur lain yang ditawarkannya. Semuanya ada di halaman manual, bacalah.


Linux
  1. Cara Shutdown atau Reboot Linux menggunakan Command Line

  2. Bagaimana memulihkan file yang dihapus di Linux menggunakan alat pemulihan data Scalpel?

  3. Bagaimana cara membandingkan file biner di Linux?

  1. Bagaimana melakukan perbandingan file baris demi baris di Linux menggunakan perintah diff

  2. Cara Mengelola File Log Menggunakan Logrotate Di Linux

  3. Cara Reboot Linux Menggunakan Command Line

  1. Cara Membuat File di Linux Menggunakan Terminal/Command Line

  2. 11 Contoh Perintah Linux diff3 (Bandingkan 3 File Baris demi Baris)

  3. Cara Mengurutkan File di Linux menggunakan Perintah Sortir