• 【2018夏季达沃斯】未来就业报告发布:机器将比人更“能干” 哪些职位更“吃香”? 2018-09-19
  • 西安市民:本想买点香菜吃火锅?比较后还是买了些肉 2018-09-19
  • 安吉发布乡村治理标准规范 2018-09-19
  • 华北能源监管局开展电网运行风险管控专项督查 2018-09-18
  • 马来西亚新山依斯干达特区吸资2531亿马币 ——凤凰网房产马来西亚 2018-09-18
  • 繁星戏剧挑战浸没式独角戏 2018-09-18
  • 领导干部自然资源资产离任审计制度试点 让福建省光泽县绿意盎然(图)-地方新闻-时政频道-中工网 2018-09-08
  • 人民日报评留美生数落父母:为亲情拓对话空间 2018-09-07
  • 网友给四川省委书记、省长留言获回复 共计25条 2018-09-07
  • 娱乐城新优惠 2018-09-06
  • 无人售货架现身出租车内 乘客扫码付款随时取走零食 2018-09-06
  • 江西公布拖欠劳动报酬典型案例 最高拖欠近200万元 2018-09-06
  • 做学习宣传贯彻人民领袖思想的排头兵 2018-09-06
  • 华夏幸福荣获2018中国品牌先锋大奖之杰出企业奖 2018-09-05
  • 10大路口因礼让斑马线致堵 济南交警推新规约束行人 ——凤凰网房产济南 2018-09-05
  • 如何在Linux上提高文本的搜索效率

    栏目: linux 发布于: 2014-02-28 12:40:05

    ack

    对于系统管理员或程序员来说,当需要在复杂配置的目录中或者在大型源码树中搜寻特定的文本或模式时,grep类型的工具大概是最受欢迎的。

    如果grep是你最喜欢的工具之一,那么你可能会更喜欢ack。ack是一个基于Perl的类似于grep的命令行工具,但是搜索速度更快,能力比grep更强。尤其是当你是程序员时,我强烈推荐你使用ack来取代grep。

    ack的用法非常适用与代码搜索,因此程序员可以在源码树中进行复杂的查询,而只需要更少的按键。

    ack的特性

    ack的一些非常强大的特性:

        1、默认搜索当前工作目录

        2、默认递归搜索子目录

        3、忽略元数据目录,比如.svn,.git,CSV等目录

        4、忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp)

        5、在搜索结果中打印行号,有助于找到目标代码

        6、能搜索特定文件类型(比如Perl,C++,Makefile),该文件类型可以有多种文件后缀

        7、高亮搜索结果

        8、支持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://www.rocksun.cn/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

    本文转载自:http://www.rocksun.cn/6881/

    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:如何在Linux上提高文本的搜索效率
    IT技术书籍推荐:
    利用Python进行数据分析
    利用Python进行数据分析
    麦金尼 (Wes McKinney) (作者), 唐学韬 (译者), 等 (译者)
    《利用Python进行数据分析》内容简介:学习NumPy(NumericalPython)的基础和高级知识;从pandas库的数据分析工具开始利用高性能工具对数据进行加载、清理、转换、合并以及重塑;利用matpIotlib创建散点图以及静态或交互式的可视化结果;利用pandas的groupby功能对数据集进行切片、切块和汇总操作;处理各种各样的时间序列数据。
    最新互联网资讯