configuration - 在 ack 中,我可以定义一个受扩展名和第一行限制的类型(两个过滤器类型)吗?
问题描述
如果我理解正确(从Defining your own types in 中ack --man
),当我使用--type-set
in .ackrc
(或在命令行)时,我只能使用一个“filtertype”。就我而言,我想匹配具有特定扩展名且第一行中也存在模式的文件。我想象它看起来像这样(也许--type-set
中间没有:
--type-set
mytype:firstlinematch:my.regex.pattern...
--type-set
mytype:ext:myextension
但是,如果我这样做,则忽略 linematch,因为类型被第二个条目替换。*
我知道 允许多个条目--type-add
,但这意味着这个或那个条件必须为真,而不是限制在两者都为真时。
对于这种情况,有没有办法使用两种过滤器类型来缩小范围?
- (如果我是对的,那么稍后在定义被破坏时,警告会有所帮助
.ackrc
。)
解决方案
用作--type-add
第二个定义没有限制。如果定义foo
文件类型如下:
ack --type-set foo:.txt --foo bar
这将查找txt
文件中bar
某处的所有文件。如果添加到此文件类型设置第一行匹配:
ack --type-set foo:.txt --type-add foo:firstlinematch:/pr.*t/ --foo bar
这将文件类型重新定义为所有 txt 文件以及在其第一行中包含正则表达式 /pr.*t/ 的任何文件。因此,它会在该文件集中找到所有bar
s。换句话说,type-add
就是将s 添加到文件的定义中。man 文件明确表示:
“类型规范可以重复,并且可以一起进行或运算。”
推荐阅读
- php - 通过 AWS Route53 添加多个 MX 记录 - changeResourceRecordSet - PHP
- python - 如何使用 google drive api 获取 google drive 中所有文件的名称?
- google-app-engine - Java 邮件 API 适用于本地主机但不适用于谷歌应用引擎
- c++ - 为什么构造函数只调用一次?
- android - HTML5 视频播放器在 ionic5 android 中不起作用
- kubernetes - Kubernetes 端口转发是如何工作的?查看 GUI 是一种安全且响应迅速的方法吗?
- httpd.conf - httpd.conf 中错误页面的 Apache 重写规则
- python - Python - SMTP 监控
- python - 用于安装 python 和运行脚本的批处理文件
- nginx - 使用 Tarantool http 作为 Nginx 上游服务器 - 出现错误 13: Permission denied