ack 比 grep 好用的文本搜索工具
github地址https://github.com/beyondgrep/ack2
安装
mac
brew install ack
linux
yum install ack
其他系统可以查看https://beyondgrep.com/install/安装
ack 命令 (ack –help)
用法: ack [OPTION]… PATTERN [FILES OR DIRECTORIES]
           参数        正则       文件/目录/描述
从当前目录下的树中的每个源文件中搜索PATTERN。如果指定了任何文件或目录,则仅检查那些文件和目录。ack也可以搜索STDIN,但前提是没有指定文件或目录参数,或者其中一个是“ - ”。
可以在ACK_OPTIONS环境变量或.ackrc文件中指定默认开关。如果您不想依赖环境,请使用–noenv将其关闭。
示例:ack -i select
搜索:
-i, –ignore-case 忽略PATTERN中的大小写区别
  –[no]smart-case              忽略PATTERN中的大小写区别,
                                仅当PATTERN不包含大写。
                                如果指定了-i,则忽略
-v, –invert-match 反向匹配:选择不匹配的行
-w, –word-regexp 强制PATTERN仅匹配整个单词
-Q, –literal 引用所有元字符; PATTERN是字面意思
搜索输出:
–lines=NUM 仅打印每个文件的NUM个
-l, –files-with-matches 仅打印包含匹配项的文件名
-L, –files-without-matches 仅打印没有匹配项的文件名
–output=expr 输出每行的expr的求值(关闭文本高亮显示)
  -o                            仅显示与PATTERN匹配的行的部分与
                                –output =’$&’相同
–passthru 打印所有行,无论是否匹配
–match PATTERN PATTERN显式指定PATTERN
-m, –max-count=NUM 在NUM匹配后停止在每个文件中搜索
-1 在任何类型的一场比赛后停止搜索
  -H, –with-filename           打印每个匹配的文件名
                                (默认值:on,除非明确搜索单个文件)
-h, –no-filename 禁止输出前缀文件名
-c, –count 显示每个文件匹配的行数
–[no]column 列显示第一个匹配的列号
-A NUM, –after-context=NUM 在匹配行之后打印NUM行尾随上下文
-B NUM, –before-context=NUM 在匹配行之前打印NUM行前导上下文
-C [NUM], –context[=NUM] 打印输出上下文的NUM行(默认为2)
  –print0                      打印空字节作为文件名之间的分隔符
                                仅适用于-f,-g,-l,-L或-c
-s 禁止有关不存在或不可读文件的错误消息
文件显示:
  –pager=COMMAND               通过COMMAND管道所有ack输出。
                                例如, - pager =“less -R”。
                                如果重定向输出,则忽略
  –nopager                     不要通过寻呼机发送输出。
                                取消〜/ .ackrc,ACK_PAGER或ACK_PAGER_COLOR中的任何设置
  –[no]heading                 在每个文件的结果上方打印文件名
                                (默认:交互使用时打开)
  –[no]break                   在不同文件的结果之间打印中断
                                (默认:交互使用时打开)
–group 与–heading –break相同
–nogroup 与–noheading –nobreak相同
  –[no]color                   color突出显示匹配的文本
                                (默认值:on,除非重定向输出,或在Windows上)
–[no]colour 颜色与 - [no]颜色相同
–color-filename=COLOR
–color-match=COLOR
–color-lineno=COLOR 设置文件名,匹配项和行号的颜色
–flush 立即刷新输出,即使非交互式使用ack(当输出到管道或文件时)
文件查找:
-f 仅打印所选文件,无需搜索。不得指定PATTERN
-g 与-f相同,但仅选择与PATTERN匹配的文件
–sort-files 在词法上对找到的文件进行排序
–show-types 显示每个文件的类型
–files-from=FILE 读取要从FILE中搜索的文件列表
-x 读取要从STDIN搜索的文件列表
文件包含/排除:
–[no]ignore-dir=name 从被忽略的目录列表中添加/删除目录
–[no]ignore-directory=name 与 ignore-dir 相同
–ignore-file=filter 添加忽略的过滤器files
-r, -R, –recurse 递归查找 (默认: on)
-n, –no-recurse 不递归查找子目录
–[no]follow Follow symlinks. Default is off.
-k, –known-types 仅包括ack识别的类型的文件
–type=X 仅包含X个文件,其中X是可识别的文件类型
–type=noX 排除X文件。有关支持的文件类型,请参阅“ack –help-types”
文件类型规范:
  –type-set TYPE:FILTER:FILTERARGS
                                应用于给定FILTER的给定FILTERARGS的文件被识别为TYPE类型。这将替换类型TYPE的现有定义.
  –type-add TYPE:FILTER:FILTERARGS
                                将给定FILTERARGS应用于给定FILTER的文件识别为TYPE类型
–type-del TYPE 删除与TYPE关联的所有过滤器
其他:
  –[no]env                     忽略环境变量和全局ackrc文件
                                –env合法但多余
–ackrc=filename 指定要使用的ackrc文件
–ignore-ack-defaults 忽略ack中包含的默认定义
–create-ackrc 将自定义的默认ackrc输出到标准输出
–help, -? 帮助
–help-types 显示所有已知类型
–dump 转储从哪些RC文件加载选项的信息
  –[no]filter                  filter强制ack将标准输入视为管道(–filter
                                或tty(–nofilter)
  –man                         Man 页面
–version 显示版本和版权
–thpppt Bill the Cat
–bar The warning admiral
–cathy Chocolate! Chocolate! Chocolate!