ack 正则表达式 逻辑或

ack 正则表达式 逻辑或

如果文件名与以下任何单词匹配,我想忽略该文件:copy、cony、coby OR tool、trol、thol 等。

这个有效:

ack -l -i --ignore-file=match:/co.y/ --ignore-file=match:/t.ol/ "mystring" _mynukelib

但我想使用单个 --ignore 参数。我尝试使用“|”像普通正则表达式一样创建“OR”逻辑,但不起作用:

ack -l -i --ignore-file=match:/co.y|t.ol/ "mystring" _mynukelib

执行逻辑或的正确语法是什么?

答案1

要使该ignore开关针对多个正则表达式起作用,请使用花括号和逗号。

ack -l -i --ignore-file=match:{t.ol,co.y} "mystring" _mynukelib

这将忽略_mynukelib目录中名称为正co.y则表达式的任何文件,t.ol即使它们包含mystring.

要排除其他正则表达式(或字符串),只需将它们添加到以逗号分隔的大括号中即可。ack使用 shell 的大括号扩展,bash这可能就是您正在使用的。它的工作原理是一样的。

相关内容