如何在Linux上提高文本的搜索效率
2023-09-11 14:16:02 时间
ack_ampliado
对于系统管理员或程序员来说,当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时,grep类型的工具大概是最受欢迎的。
如果grep是你最喜欢的工具之一,那么你可能会更喜欢ack。ack是一个基于Perl的类似于grep的命令行工具,但是搜索速度更快,能力比grep更强。尤其是当你是程序员时,我强烈推荐你使用ack来取代grep。
ack的用法非常适用与代码搜索,因此程序员可以在源码树中进行复杂的查询,而只需要更少的按键。
ack的特性ack的一些非常强大的特性:
默认搜索当前工作目录 默认递归搜索子目录 忽略元数据目录,比如.svn,.git,CSV等目录 忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码 能搜索特定文件类型(比如Perl,C++,Makefile),该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。相比于搜索速度,ack总体上比grep更快。ack的速度只要表现在它的内置的文件类型过滤器。在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。
在Linux上安装ack尽管在大多数Linux发行版中是ack是标准包,可轻易获得(比如在基于debian的系统中,是ack-grep包,而在基于Redhat的系统中则是ack包),但是与发行版捆绑的ack版本仍然是1.x,而ack2.0已经发布,而且拥有更多特性。
因此我准备在官方网站下载,然后安装ack。
方便的是,ack在官网可可作为一个单独的Perl脚本获得,其中整合了所有需要依赖的模块。因此,你不需要额外安装Perl模块来运行这脚本。
为了在你的Linux系统中安装ack,去官网下载最新版本的ack。在写本文时,最新的版本是2.12
$ wget http://beyondgrep.com/ack-2.12-single-file $ sudo mv ack-2.12-single-file /usr/local/bin/ack $ sudo chmod 0755 /usr/local/bin/ack
需要注意的是,在基于Debian的系统中,有一个独立的包也叫ack(汉码转换器)。所以如果你碰巧有使用那个包,那么你就必须重命名ack来避免命名冲突了。
ack的使用案例 1.在当前目录递归搜索单词”eat”,不匹配类似于”feature”或”eating”的字符串:$ ack -w eat2.搜索有特殊字符的字符串’$path=.’,所有的元字符(比如’$,’.)需要在字面上被匹配:
$ ack -Q $path=. /etc3.除了dowloads目录,在所有目录搜索”about”单词:
$ ack about --ignore-dir=downloads4.只搜索包含’protected’单词的PHP文件,然后通过文件名把搜索结果整合在一起,打印每个文件对应的搜索结果:
$ ack --php --group protected
ack_1
5.获取包含’CFLAG’关键字的Makefile的文件名。文件名为*.mk,makefile,Makefile,GNUmakefile的都在考虑范围内:$ ack --make -l CFLAG6.显示整个日志文件时高亮匹配到的字符串:
$ tail -f /var/log/syslog | ack --passthru 192.168.1.107.要换取ack支持的文件过滤类型,运行:
$ ack --help-type
ack_2
原文发布时间为:2014-03-03
本文来自云栖社区合作伙伴“Linux中国”
Linux 搜索命令总结 - whereis,which,locate,find,grep 一、命令搜索命令 whereis 与 which 1. whereis 命令 搜索命令所在路径及帮助文档所在位置 -b: 只查找可执行文件 -m: 之查找帮助文件 2. which 命令 搜索命令所在位置及别名
相关文章
- 【Linux】linux常用基本命令
- Linux IO - 同步,异步,阻塞,非阻塞
- linux下创建带password的用户
- linux shell搜索某个字符串,然后在后面加上字符串?字符串后面插入字符串?sed字符串后面插入字符串?
- Linux下Docker的安装
- Linux学习笔记--which命令(搜索命令的命令)
- Recoll:Unix和Linux桌面的文本搜索工具
- Linux 系统监控、诊断工具之 IO wait
- Linux 查看进程运行的完整路径方法
- linux中启动 java -jar 后台运行程序
- 【Linux】linux ln文件夹的链接(转)
- 《嵌入式Linux开发实用教程》——1.3 arm-linux交叉编译链
- Linux /proc/kcore详解(一)
- Linux中DHCP服务器的简单配置
- 《Oracle高性能自动化运维》一一1.4 Linux内存体系与Oracle内存空间
- Linux (一). tcpdump
- linux下使用ack进行代码搜索
- Linux—linux 查看一个文件有多少M
- windows往linux里拷贝内容编码问题导致nginx报错:unknown directive “ “ in /etc/nginx/conf.d/XXX.conf 的问题
- Linux at命令详解
- 【正点原子FPGA连载】第三十章Linux按键输入实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Linux开发指南
- Linux安装Nginx1.7.4、php5.5.15和配置
- 【Linux】linux经常使用基本命令
- Linux学习笔记(14)linux在6.x和7.x系列的安装与基本使用区别
- Linux学习笔记(9)linux网络管理与配置之一——Linux基础网络命令与学习大纲(0)
- Linux学习笔记(8)文件搜索与帮助(find)
- Linux学习笔记(2)linux系统信息与进程相关命令