grep
сам по себе не будет работать здесь, потому что регулярные выражения недостаточно мощны, чтобы соответствовать набору строк, которые вы описываете.
В частности, язык всех строк вида
#ifndef X
#define Y
Где X
≠ Y
не является регулярным языком. Вы можете доказать это, используя теорему Михилла-Нерода (поскольку любые две строки вида #ifndef X
для разных вариантов X
попадают в разные классы эквивалентности отношения различимости). В результате нет никакого способа написать регулярное выражение, которое может соответствовать строкам этой формы, а так как grep
использует чистые математические регулярные выражения, нет способа использовать grep
для решения этой проблемы.
Извините за отрицательный результат, но я надеюсь, что это поможет!
Сохранить время и #define _MYFLIE_H_ _MYFILE_H_ – QuentinUK
Я только узнал simpled поиск не будет задать расширенное делать: HTTP: // StackOverflow .com/q/3717772/ – kay
Также не следует читать '_MYFILE_H_'. '' Имена, начинающиеся с символа подчеркивания, за которым следует заглавная буква, и имена, содержащие два последовательных символа подчеркивания, зарезервированы для реализации. Не используйте их. –