Mam dwa pliki konfiguracyjne, oryginalny od menedżera pakietów i dostosowany przeze mnie. Dodałem kilka komentarzy opisujących zachowanie.
Jak mogę uruchomić diff
pliki konfiguracyjne, pomijając komentarze? Skomentowany wiersz jest definiowany przez:
- opcjonalne wiodące białe znaki (tabulatory i spacje)
- znak skrótu (
#
) - cokolwiek innego
Najprostszym wyrażeniem regularnym byłoby pominięcie pierwszego wymagania #.*
. Próbowałem --ignore-matching-lines=RE
( -I RE
) opcji GNU diff 3.0, ale nie mogłem uzyskać pracy z tym RE. Próbowałem też .*#.*
i .*\#.*
bez powodzenia. Dosłowne umieszczenie line ( Port 631
) jako RE
nic nie pasuje, ani nie pomaga umieszczać RE między ukośnikami.
Jak sugeruje to w „diff” smak wyrażenia regularnego wydaje się brakować? , Próbowałem grep -G
:
grep -G '#.*' file
To wydaje się pasować do komentarzy, ale nie działa diff -I '#.*' file1 file2
.
Jak więc korzystać z tej opcji? Jak mogę diff
pominąć niektóre wiersze (w moim przypadku komentarze)? Proszę nie sugerować grep
pliku i porównywać plików tymczasowych.
diff -I
nie zachowuje się tak, jak się spodziewałem. Zaktualizowałem swoją odpowiedź przykładem, który wyjaśnił mi to zachowanie.
-I
opcja powoduje, że blok jest ignorowany tylko wtedy, gdy wszystkie jego wiersze są zgodne z wyrażeniem regularnym. Możesz więc w ten sposób zignorować zmianę tylko do komentowania, ale nie zmiany do komentowania, które są zbliżone do zmiany bez komentowania.