Diff, sadece sağ dosyadan değiştirilmiş satırı göster


24

Dosyam var ave klonlandığından beri değiştirilen bsatırların çıktısını almak istiyorum . Sadece değiştirilmiş çizgiler, çevreleyen bağlam yok, fark ofset işareti yok.ba

Bunu kabuk komut dosyası kullanarak nasıl yapabilirim? (Python / Perl / PHP / ... yok)

Sed ve awk kabul edilebilir çözümlerdir.

Şimdilik ne yapıyorum -suppress-common-lines ve sed ile regex backreferences kullanarak sadece boşluktan sonra sağ kısmı almak için sed-diff. Daha iyi bir yol olmalı?

Perl (yasak olan) kullanarak, şöyle bir şey yapardım:

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

Yanıtlar:


34

GNU diffutils paketi ile diffbu sadece değiştirilen ya da yeni eklenen b dosyasındaki satırları çıkartacaktır:

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

4
Muhteşem. Bilgi
— Texinfo'da gömülüdür ve

6

Bir seçenek daha eklemelisiniz:

grep -vf file1 file2

Bu satırların sıralanmasını gerektirmese de, grep'in daha fazla bellek kullandığını ve büyük dosyalar için kilitleneceğini düşünüyorum.
— Sridhar Sarnobat

Satırlar kopyalandığında da işe yaramazsa
— Jayen

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.