转:如何在Linux上提高文本的搜索效率

原文来自于:http://www.geekfan.net/6881/

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

1

2

3

4

$ 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”的字符串:

1

2

$ ack -w eat

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

1

2

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

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

1

2

$ ack about --ignore-dir=downloads

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

1

2

$ ack --php --group protected

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

1

2

$ ack --make -l CFLAG

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

1

2

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

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

1

2

$ ack --help-type

原文链接: Xmodulo 翻译: 极客范minejo

译文链接: http://www.geekfan.net/6881/

时间: 2024-10-08 20:55:11

转:如何在Linux上提高文本的搜索效率的相关文章

如何在Linux上提高文本的搜索效率

对于系统管理员或程序员来说,当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时,grep类型的工具大概是最受欢迎的. 如果grep是你最喜欢的工具之一,那么你可能会更喜欢ack.ack是一个基于Perl的类似于grep的命令行工具,但是搜索速度更快,能力比grep更强.尤其是当你是程序员时,我强烈推荐你使用ack来取代grep. ack的用法非常适用与代码搜索,因此程序员可以在源码树中进行复杂的查询,而只需要更少的按键. ack的特性 ack的一些非常强大的特性: 默认搜索当前工作

[兄弟连技术交流分享]如何在 Linux 上安装和配置Munin

如何在 Linux 上安装和配置Munin Munin 是一款类似 RRD tool 的非常棒的系统监控工具,它能提供给你多方面的系统性能信息,例如 磁盘.网络.进程.系统和用户.这些是 Munin 默认监控的内容.下面跟大家来聊聊Munin! Munin 如何工作? Munin 以客户端-服务器模式运行.主服务器上运行的 Munin 服务器进程会从本地运行的客户端守护进程(Munin 可以监控它自己的资源)或者远程客户端(Munin 可以监控上百台机器)收集数据,然后在它的 web 界面上以图

如何在 Linux 上配置点对点 VPN

一个传统的 VPN(如 OpenVPN.PPTP)由一个 VPN 服务器和一个或多个连接到这台服务器的客户端组成.当任意两个 VPN 客户端彼此通信时,VPN 服务器需要中继它们之间的 VPN 数据流量.这样一个中心辐射型的 VPN 拓扑结构存在的问题是,当连接的客户端增多以后,VPN 服务器很容易成为一个性能上的瓶颈.从某种意义上来说,中心化的 VPN 服务器也同样成为一个单点故障的来源,也就是当 VPN 服务器出现故障的时候,整个 VPN 都将无法被任何 VPN 客户端访问. 点对点 VPN

[转帖]如何在Linux上使用命令行查看硬件信息

如何在Linux上使用命令行查看硬件信息 时间:2016-01-13   作者:admin 分类:新手入门 阅读:126次 http://embeddedlinux.org.cn/emb-linux/entry-level/201601/13-4889.html lscpu 原来更简单.. 在 Linux 中,可用于检查和查看硬件信息的命令有很多.其中某些命令可以输出特定硬件和信息,例如:CPU 和内存等.本教程列出一些 Linux 上查看硬件信息的常用命令,以帮助大家快速输出硬件的配置细节.

如何在linux上开设使用ssl安全连接的站点

问题 如何在Linux上开设使用ssl安全链接的站点 解决方案 目前的[email protected]尚不支持直接开设ssl站点,所以需要手动配置ssl功能,步骤如下: 1) 每个ssl站点必须工作在独立的IP,所以服务器上必须有多个IP.请为您的服务器增加多个IP地址,方法略. 2) 登陆到主控界面中,点击服务器管理,查询当前这台服务器,选择修改ip地址,把刚才几个新ip都加上. 3) 启用apache的ssl模块.首先查看/usr/prima/etc/httpd/modules.conf,

如何在Linux上安装Storm

Storm是开源的分布式实时计算系统,能够让数据流处理变得简单.可靠,也因此在大数据领域有广泛的实际 应用.下面介绍一下如何在Linux系统上安装Storm.根据Storm官网介绍,安装Storm软件分五步: 安装Zookeeper. 安装Storm的依赖环境:Java和Python. 下载并解压Storm安装包. 修改必要的Storm配置文件. 启动Storm程序. 一.Storm作为分布式系统,它的运行需要借助Zookeeper来进行协同.因此安装Storm之前需要先安装 Zookeeper

如何在 Linux 上永久挂载一个 Windows 共享

导读 如果你已经厌倦了每次重启 Linux 就得重新挂载 Windows 共享,读读这个让共享永久挂载的简单方法. 在 Linux 上和一个 Windows 网络进行交互从来就不是件轻松的事情.想想多少企业正在采用 Linux,需要在这两个平台上彼此协作.幸运的是,有了一些工具的帮助,你可以轻松地将 Windows 网络驱动器映射到一台 Linux 机器上,甚至可以确保在重启 Linux 机器之后共享还在. 在我们开始之前 要实现这个,你需要用到命令行.过程十分简单,但你需要编辑 /etc/fs

如何在 Linux 上安装和配置Munin

Munin 是一款类似 RRD tool 的非常棒的系统监控工具,它能提供给你多方面的系统性能信息,例如 磁盘.网络.进程.系统和用户.这些是Munin 默认监控的内容.下面兄弟连www.lampbrother.net跟大家来聊聊Munin! Munin 如何工作? Munin 以客户端-服务器模式运行.主服务器上运行的 Munin 服务器进程会从本地运行的客户端守护进程(Munin 可以监控它自己的资源)或者远程客户端(Munin 可以监控上百台机器)收集数据,然后在它的 web 界面上以图形

如何在 Linux 上用 SQL 语句来查询 Apache 日志

Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中着重讲解 Apache HTTP web server 生成的 Apache access 日志. 这次,我们会通过另类的途径来分析 Apache access 日志,我们使用的工具是 asql.asql 是一个开源的工具,它能够允许使用者使用 SQL 语句来查询日志,从而通过更加友好的格式展现相同