我使用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),
...
)发布于 2017-03-30 16:46:01
下面是[医]帕格利氏病证对--include (强调我的)的看法:
--include=pattern如果指定了任何--include模式,则处理的唯一文件是与其中一个模式匹配的文件(并且与--exclude模式不匹配)。此选项不影响目录,但适用于从--file-list获取的所有文件,无论是在命令行中列出的,还是通过扫描目录获得的。模式是一个PCRE正则表达式,与文件名的最终组件相匹配,而不是整个路径。-F、-w和-x选项不适用于此模式。这个选项可以被给予任何次数。如果文件名与an --include和--exclude模式相匹配,则排除它。这个选项没有简短的形式。
在正则表达式开头的*当然是无效的。
现在您可以理解错误消息:)
解决方案:--include='.*\.sv$'或只是--include='\.sv$'
https://stackoverflow.com/questions/43123536
复制相似问题