У меня есть два файла конфигурации, оригинальный от менеджера пакетов и один измененный мной. Я добавил несколько комментариев для описания поведения.
Как мне запустить 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опция заставляет блок игнорироваться, только если все его строки соответствуют регулярному выражению. Таким образом, вы можете игнорировать изменения только для комментариев таким образом, но не изменения комментариев, которые близки к изменениям без комментариев.