Mam dwa pliki konfiguracyjne, oryginalny od menedżera pakietów i dostosowany przeze mnie. Dodałem kilka komentarzy opisujących zachowanie.
Jak mogę uruchomić diffpliki 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 REnic 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ę diffpominąć niektóre wiersze (w moim przypadku komentarze)? Proszę nie sugerować greppliku i porównywać plików tymczasowych.
diff -Inie zachowuje się tak, jak się spodziewałem. Zaktualizowałem swoją odpowiedź przykładem, który wyjaśnił mi to zachowanie.
-Iopcja 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.