Diff, tampilkan baris yang dimodifikasi hanya dari file kanan


24

Saya punya file adan bsaya ingin menampilkan baris byang berubah sejak itu dikloning a. Hanya garis yang dimodifikasi, tidak ada konteks di sekitarnya, tidak ada tanda offset yang berbeda.

Bagaimana saya bisa melakukannya dengan menggunakan skrip shell? (Tidak Ada Python / Perl / PHP / ...)

Sed dan awk adalah solusi yang bisa diterima.

Untuk saat ini, apa yang saya lakukan berbeda dengan --suppress-common-lines dan menggunakan regex backreferences untuk mengambil bagian yang tepat setelah spasi. Harus ada cara yang lebih baik?

Menggunakan perl (yang dilarang), saya akan melakukan sesuatu seperti ini:

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'

Jawaban:


34

Dengan paket GNU diffutils , diffini akan menampilkan hanya baris dari file b yang dimodifikasi atau baru saja dimasukkan:

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b

4
Luar biasa. Malu info tersebut dimakamkan di Texinfo dan tidak ada petunjuk yang disediakan di halaman manual yang saya baca ..
Robottinosino

6

Anda harus menambahkan satu opsi lagi:

grep -vf file1 file2

Meskipun ini tidak memerlukan baris untuk diurutkan, saya pikir grep menggunakan lebih banyak memori dan akan macet untuk file besar.
Sridhar Sarnobat

tidak berfungsi jika garis digandakan juga
Jayen

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.