У меня есть два файла конфигурации, оригинальный от менеджера пакетов и один измененный мной. Я добавил несколько комментариев для описания поведения.
Как мне запустить diff
файлы конфигурации, пропуская комментарии? Комментируемая строка определяется как:
- необязательный начальный пробел (табуляции и пробелы)
- знак хеша (
#
) - ничего другого персонажа
(Простейший) регулярное выражение пропуская первое требование будет #.*
. Я попробовал --ignore-matching-lines=RE
( -I RE
) вариант GNU diff 3.0, но не смог заставить его работать с этим RE. Я тоже пытался .*#.*
и .*\#.*
без удачи. Буквальное размещение строки ( Port 631
) as RE
ничего не соответствует и не помогает помещать RE между косыми чертами.
Как предполагается в инструменте «diff», аромат регулярных выражений кажется недостаточным? Я попробовал grep -G
:
grep -G '#.*' file
Кажется, это соответствует комментариям, но не работает diff -I '#.*' file1 file2
.
Итак, как использовать эту опцию? Как я могу заставить diff
пропустить определенные строки (в моем случае, комментарии)? Пожалуйста, не предлагайте grep
файл и сравнивать временные файлы.
diff -I
не ведет себя так, как я ожидал. Я обновил свой ответ примером, который прояснил мне это поведение.
-I
опция заставляет блок игнорироваться, только если все его строки соответствуют регулярному выражению. Таким образом, вы можете игнорировать изменения только для комментариев таким образом, но не изменения комментариев, которые близки к изменениям без комментариев.