如何使用ack
搜索文件以查找包含所有(或任何)已定义模式的行?
ack 'pattern1|pattern2|pattern3'
但如何写 AND(ALL)?例如如何写以下内容:
if( $line =~ /pattern1/ && $line =~ /pattern2/ && $line =~ /pattern3/ ) {
say $line
}
使用ack
?
或者更确切地说,可以使用logical and
创建正则表达式吗?
答案 0 :(得分:5)
/foo/s && /bar/s && /baz/s
可以写成
/^(?=.*?foo)(?=.*?bar)(?=.*?baz)/s
我们实际上并不需要预测最后一个。
/^(?=.*?foo)(?=.*?bar).*?baz/s
由于我们不关心如果有多个模式的哪个实例匹配,我们可以将其简化为
/^(?=.*foo)(?=.*bar).*baz/s
答案 1 :(得分:2)
最简单的解决方案是通过链接调用将渐进式过滤应用于db_2.mytable
:
ack
答案 2 :(得分:0)
我有一个类似的用例,我想查找包含多个模式但(可能)在不同行上的文件。
Startup
这使我可以找到一起使用2个库的文件。