GNU/Linux >> Belajar Linux >  >> Linux

Cara menampilkan hanya baris yang berbeda menggunakan diff (bash)

a.txt:

1;john;125;3
1;tom;56;2
2;jack;10;5

b.txt:

1;john;125;3
1;tom;58;2
2;jack;10;5

Gunakan kom:

comm -13 a.txt b.txt 
1;tom;58;2

Opsi baris perintah untuk comm cukup mudah:

-1 menekan kolom 1 (baris unik untuk FILE1)

-2 menekan kolom 2 (baris unik untuk FILE2)

-3 sembunyikan kolom 3 (baris yang muncul di kedua file)


Inilah solusi sederhana yang menurut saya lebih baik daripada diff :

sort file1 file2 | uniq -u

  • sort file1 file2 menggabungkan dua file dan menyortirnya
  • uniq -u mencetak garis unik (yang tidak berulang). Itu membutuhkan input untuk diurutkan sebelumnya.

Dengan menggunakan penentu format grup, Anda dapat menekan pencetakan baris yang tidak diubah dan hanya mencetak baris yang diubah untuk yang diubah

diff --changed-group-format="%>" --unchanged-group-format="" file1 file2


Dengan asumsi Anda ingin mempertahankan hanya baris unik untuk file 2 yang dapat Anda lakukan:

comm -13 file1 file2

Perhatikan bahwa comm perintah mengharapkan kedua file berada dalam urutan yang diurutkan.


Linux
  1. Bagaimana cara menulis integer ke file biner menggunakan Bash?

  2. perintah diff untuk mendapatkan jumlah baris yang berbeda saja

  3. Bagaimana cara mendaftar folder menggunakan perintah bash?

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

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

  3. Cara hanya mendapatkan jumlah baris file

  1. Bagaimana cara menyalin direktori ke direktori menggunakan install di bash?

  2. Bagaimana cara mengurai header HTTP menggunakan Bash?

  3. Bagaimana cara menambahkan pekerjaan crontab ke crontab menggunakan skrip bash?