CentOS系统里如何提高文本搜索效率

供稿:hz-xin.com     日期:2025-01-17

  对于系统管理员或程序员来说,当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时,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 eat

  2.搜索有特殊字符的字符串’$path=.’,所有的元字符(比如’$',’.')需要在字面上被匹配:

  $ ack -Q '$path=.' /etc

  3.除了dowloads目录,在所有目录搜索”about”单词:

  $ ack about --ignore-dir=downloads

  4.只搜索包含’protected’单词的PHP文件,然后通过文件名把搜索结果整合在一起,打印每个文件对应的搜索结果:

  $ ack --php --group protected

  5.获取包含’CFLAG’关键字的Makefile的文件名。文件名为*.mk,makefile,Makefile,GNUmakefile的都在考虑范围内:

  $ ack --make -l CFLAG

  6.显示整个日志文件时高亮匹配到的字符串:

  $ tail -f /var/log/syslog | ack --passthru 192.168.1.10

  7.要换取ack支持的文件过滤类型,运行:

  $ ack --help-type



CentOS系统里如何提高文本搜索效率
1.在当前目录递归搜索单词”eat”,不匹配类似于”feature”或”eating”的字符串:ack -w eat 2.搜索有特殊字符的字符串’$path=.’,所有的元字符(比如’$',’.')需要在字面上被匹配:ack -Q '$path=.' \/etc 3.除了dowloads目录,在所有目录搜索”about”单词:ack about --ignore-dir=downlo...

Linux系统中怎么使用grep命令?
1、Linux系统中grep命令是一种强大的文本搜索工具,全称是Global Regular Expression Print,它能在文件中搜索符合要求的文本,并把匹配的行打印出来。它的使用权限是所有用户,大多数情况下,grep命令都是配合管道符使用,以期获得符合要求结果。它的使用方法是 grep 参数 查找条件 文件名。主要参数:-c:...

6个使用正则表达式搜索文本中内容的工具
ack是Perl编写的搜索工具,提供更直观的输出结果,如高亮显示匹配的字符串。在Centos7系统中,可以使用"man ack"了解其用法。awk是一种强大的脚本语言,用于文本处理,如提取特定值。通过"man awk"获取更多awk命令的运用方法。Silver Searcher,尽管与ack相似,但更注重速度,比如在\/etc\/passwd中搜索"nolo...

6个使用正则表达式搜索文本中内容的工具
查阅sed使用方法:man sed ack命令 ack是一个快速、可移植的命令行工具,用于在文件或目录中搜索匹配字符串,输出结果直观。安装方式:对于Centos7系统。示例:在sshd_conf.txt中查找包含"ssh"的行,不区分大小写。高亮显示搜索结果。自动检测目录和子目录中的匹配文件。查阅ack使用方法:man ack awk命令...

如何在Linux下查找文件内容包含某个特定字符串的文件
例如,要查找以"www"开头,以".com"结尾的行,可以使用命令:grep -e "www.*\\.com" \/path\/to\/files。总之,grep是一个功能强大的文本搜索工具,能够帮助用户在Linux系统中高效地查找包含特定字符串的文件。通过灵活地使用各种选项和正则表达式,用户可以满足各种搜索需求,从而提高工作效率。

CentOS中逐页显示长文本文件more命令
当我们增加参数-s后:more -s doc_30.txt 查找字符串 如果你的日志文件非常大,那么在其中查找你想要的字符串并不是那么容易。more命令的查找功能可以帮你,通过参数+\/string可以用来搜索字符串,找到的关键字会显示在第一行。比如我们要在\/var\/logs\/syslog文件中搜索“dhclient”,那more命令的格式:...

CentOS文本方式系统安装图介绍-搜狗输入法
将CentOS光盘放进光驱,然后在启动,在有提示按键的一小段时间内按ESC键,即可进入Boot Menu (引导菜单)。选择CD-ROM Drive回车。出现下面的界面。如果要用图形界面安装,直接回车即可。这里选择文本方式安装就在boot:后面输入linux text,然后回车。提示找到光盘了。问你要不要检测一下你的光盘。如果你...

CentOS常用的文本查看命令详解
1.常用的文本查看命令 下把命令一一 展示出来,然后在介绍 cat--- more--- less ---head--- tail 平时我实际使用时 cat 用的比较多吧。习惯了。。。看图 more 的好处可以按照 % 来显示你要看的内容 使用比较自由的那就是less  各种快捷键帮你实现,你想完成的调整!(可以自己实际操作...

CentOS7常用命令之 vi\/vim
在安装了 CentOS7 系统的免费云服务器中,我需要提高资源利用效率,但 Linux 命令不熟悉易遗忘。本文将深入探讨 Vim 命令的使用,以帮助理解并记住这些命令。首先,为了能在 CentOS7 系统中使用 Vim,需要通过命令行执行 yum install -y vim 进行安装。Vim 是一个从 vi 演变而来的强大文本编辑器,它...

CentOS文件查看及编辑介绍详解
在文本编辑中经常会碰到需要机械地重复一些操作,这时就需要用到重复命令。它可以让用户方便地再执行一次前面刚完成的某个复杂的命令。 重复命令只能在命令模式下工作, 在该模式下按“.” 键既可。执行一个重复命令时,其结果是依赖于光标当前位置的。 2.2.6 文本搜索与替换操作 在进行文本编辑的时候,,您可以需要...