#regex #sed
#регулярное выражение #sed
Вопрос:
Я хочу поместить в файл все строки, соответствующие следующим требованиям :
- Строка начинается с ‘*’ (пробел, за которым следует звездочка)
- Строка заканчивается либо ‘.cpp’, либо ‘.hpp’
Меня не волнует содержимое между ними, так что, например, это должно появиться
* ns1/file.cpp
* file2.hpp
Я попробовал следующую команду sed -e '/^ **(.[hc]pp)$/d' file
Но это не соответствует строкам. Любая помощь будет оценена.
Ответ №1:
Вам нужно использовать .*
между ними, чтобы соответствовать произвольному тексту:
sed '/^ *.*.[hc]pp$/d' file
Ответ №2:
egrep -v '^ [*].*[.][ch]pp$' YourFilePattern
в качестве альтернативы sed