Zróżnicowane, pokaż zmodyfikowaną linię tylko z prawego pliku


24

Mam plik ai bchciałbym wypisać wiersze btej zmienionej od czasu sklonowania a. Tylko zmodyfikowane linie, bez otaczającego kontekstu, bez znaczników przesunięcia różnic.

Jak mogę to zrobić za pomocą skryptów powłoki? (Brak Python / Perl / PHP / ...)

Sed i awk są akceptowalnymi rozwiązaniami.

Na razie to, co robię, różni się od --suppress-common-line i sed używa referencji zwrotnych, aby pobrać odpowiednią część po spacji. Musi być lepszy sposób?

Używając perla (co jest zabronione), zrobiłbym coś takiego:

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

Odpowiedzi:


34

W przypadku pakietu diffutils GNU spowodujediff to wyświetlenie tylko wierszy z pliku b, które zostały zmodyfikowane lub nowo wstawione:

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

4
Niesamowite. Szkoda, że ​​informacja została pochowana w Texinfo i nie ma podpowiedzi na stronie podręcznika, którą czytałem ..
Robottinosino,

6

Musisz dodać jeszcze jedną opcję:

grep -vf file1 file2

Chociaż nie wymaga to sortowania linii, myślę, że grep zużywa dużo więcej pamięci i ulega awarii dla dużych plików.
Sridhar Sarnobat

nie działa, jeśli wiersze są również zduplikowane
Jayen

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.