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.