
文本搜索工具ack与grep 原创
作者:坚果
团队:坚果派
公众号:“大前端之旅”
润开鸿技术专家,华为HDE,InfoQ签约作者,OpenHarmony布道师,擅长HarmonyOS应用开发、熟悉服务卡片开发,在“战码先锋”活动中作为大队长,累计培养三个小队长,带领100+队员完成Pr的提交合入。
欢迎通过主页或者私信联系我,加入坚果派,一起学习OpenHarmony应用开发。
今天在解读AT指令源码的时候有这样一个函数,hi_at_sys_cmd_register,但是我搜索不到它的出处,于是就有了对文本工具的探索。
首先使用的是grep,
下面是我的搜索结果
但是可以看到的是它的目录并不是很清晰,刚好在梁老师的推荐下,使用了ack工具。
ack
大家都说它是比grep好用的文本搜索工具
安装
特点
ack官网列出了这工具的5大卖点:
- 速度非常快,因为它只搜索有意义的东西。
- 更友好的搜索,忽略那些不是你源码的东西。
- 为源代码搜索而设计,用更少的击键完成任务。
- 非常轻便,移植性好。
- 免费且开源
实例
在记忆的时候大体上可以分为这几个部分:
Searching 代码搜索
Search output 搜索结果处理
File presentation 文件展示
File finding 文件查找
File inclusion/exclusion 文件过滤
grep常用操作
Searching
简单的文本搜索,默认是递归的。
Search File
对搜索结果进行处理,比如只显示一个文件的一个匹配项,或者xxx
File presentation
输出的结果是以什么方式展示呢,这个部分有几个参数可以练习下
File finding
没错,它可以查找文件,以省去你要不断的结合find和grep的麻烦,虽然在linux的思想是一个工具做好一件事。
File Inclusion/Exclusion
文件过滤,个人觉得这是一个很不错的功能。如果你曾经在搜索项目源码是不小心命中日志中的某个关键字的话,你会觉得这个有用。
最后来看看用grep搜索的结果。
对比下来,是不是ack更加好用呢。
这里顺便记录一下grep工具的常用命令
grep
强大的文本搜索工具
补充说明
grep (全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用,使用上十分灵活。
选项
规则表达式
grep命令常见用法
在文件中搜索一个单词,命令会返回一个包含 “match_pattern” 的文本行:
在多个文件中查找:
输出除之外的所有行 -v 选项:
标记匹配颜色 –color=auto 选项:
使用正则表达式 -E 选项:
使用正则表达式 -P 选项:
只输出文件中匹配到的部分 -o 选项:
统计文件或者文本中包含匹配字符串的行数 -c 选项:
搜索命令行历史记录中 输入过 git
命令的记录:
输出包含匹配字符串的行数 -n 选项:
打印样式匹配所位于的字符或字节偏移:
搜索多个文件并查找匹配文本在哪些文件中:
grep递归搜索文件
在多级目录中对文本进行递归搜索:
忽略匹配样式中的字符大小写:
选项 -e 制动多个匹配样式:
在grep搜索结果中包括或者排除指定文件:
使用0值字节后缀的grep与xargs:
