GNU/Linux >> Belajar Linux >  >> Linux

Daftar baris hanya dari satu file di DIFF

Tidak yakin diff sendiri dapat melakukannya tetapi Anda selalu dapat menggunakan kekuatan utilitas GNU lainnya untuk membantu Anda.

diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'

Itu melakukan diff, lalu memilih hanya baris yang dimulai dengan '-' - yang diubah dan memiliki nilai dari file diffa.txt, lalu sed hapus saja tanda '-' itu.

Edit: Setelah beberapa percobaan dengan diff , sepertinya perintah di bawah menghasilkan apa yang Anda inginkan:

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

Metode yang lebih sederhana adalah dengan menggunakan comm utilitas linux (Diperlukan file yang diurutkan untuk input). Itu menulis ke keluaran standar:

  • baris yang unik untuk diffa.txt

  • baris yang unik untuk diffb.txt

  • baris yang umum

dan Anda dapat menekan masing-masing dengan parameter 1,2 atau 3 yang sesuai. Jadi dalam kasus Anda akan terlihat seperti ini :

comm -23 diffa.txt diffb.txt

Itu menekan baris yang unik untuk diffb.txt, baris yang umum dan mencetak baris yang unik hanya untuk diffa.txt

Sumber dari: https://www.tutorialspoint.com/unix_commands/comm.htm


Saya ingin menyebutkan bahwa comm mengharapkan file input yang diurutkan dan dengan demikian melaporkan hasil yang berbeda dari diff .

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

bersifat universal. Salut untuk @vava


Linux
  1. Hapus Semua File/direktori Kecuali Satu File?

  2. Pisahkan File Dengan Jumlah Baris Termasuk Header Di Masing-Masing?

  3. Hapus Beberapa Baris Pertama Secara Efisien Dari File Teks?

  1. Ganti Garis yang Mencocokkan Pola Dengan Garis Dari File Lain Secara Berurutan?

  2. Salin N-baris Terakhir Dari Satu File Ke File Lain?

  3. Hitung Baris Dalam File?

  1. Membaca Baris Dari File Dengan Bash:Untuk Vs. Ketika?

  2. Tulis ke file .txt?

  3. Hapus baris ganjil atau genap dari file teks