Pcregrep включает ошибку расширения файла
Я использую pcregrep для поиска многострочного шаблона, и я хочу, чтобы pcregrep только для поиска файлов с определенными расширениями файлов, т.е.
pcregrep -Mrl --include=*.sv -e '<my_multi-line_pattern>' /path/to/search
Тем не менее, это выдает ошибку: pcregrep: Error in 'include' regex at offset 0: nothing to repeat
,
Я пытался убежать и дважды убежать *
но безрезультатно. Этот синтаксис отлично работает для grep
grep -rl --include=*.sv '<my_single-line_pattern>' /path/to/search
Любая помощь или советы с благодарностью.
РЕДАКТИРОВАТЬ: Пример многострочного шаблона: '(?s)^\salu.*\.opa_i('
должен соответствовать
alu u_alu(
...
.opa_i(opa),
.opb_i(opb),
...
)
1 ответ
Вот что говорят о документах pcregrep --include
(выделение мое):
--include=pattern
Если есть--include
указаны шаблоны, единственные файлы, которые обрабатываются, это те, которые соответствуют одному из шаблонов (и не соответствуют--exclude
шаблон). Этот параметр не влияет на каталоги, но он применяется ко всем файлам, перечисленным в командной строке, полученным из--file-list
или путем сканирования каталога. Шаблон является регулярным выражением PCRE и сопоставляется с конечным компонентом имени файла, а не со всем путем.-F
,-w
, а также-x
параметры не применяются к этому шаблону. Опция может быть предоставлена любое количество раз. Если имя файла совпадает с --include
и--exclude
шаблон, это исключено. Для этой опции нет краткой формы.
И *
в начале регулярное выражение, конечно, не действует.
Теперь вы можете разобраться в сообщении об ошибке:)
Решение: --include='.*\.sv$'
или просто --include='\.sv$'