zoukankan      html  css  js  c++  java
  • grep命令 查找包含某内容的文件

    作用 

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
    grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

    格式及主要参数

        grep [options]
        主要参数:  grep --help可查看
             -c:只输出匹配行的计数。
            -i:不区分大小写。
            -h:查询多文件时不显示文件名。
            -l:查询多文件时只输出包含匹配字符的文件名。
            -n:显示匹配行及 行号。
            -s:不显示不存在或无匹配文本的错误信息。
            -v:显示不包含匹配文本的所有行。
            --color=auto :可以将找到的关键词部分加上颜色的显示。
    
    
        pattern正则表达式主要参数:
        : 忽略正则表达式中特殊字符的原有含义。
        ^:匹配正则表达式的开始行。
        $: 匹配正则表达式的结束行。
        <:从匹配正则表达 式的行开始。
        >:到匹配正则表达式的行结束。
        [ ]:单个字符,如[A]即A符合要求 。
        [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
        .:所有的单个字符。
        *:所有字符,长度可以为0。 
       x{m}  #重复字符x,m次,如:'0{5}'匹配包含5个o的行。   
       x{m,} #重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。   
       x{m,n}#重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。  
     

     实例

    显示所有以d开头的文件中包含 test的行

    grep 'test' d*
    

    显示在aa,bb,cc文件中匹配test的行

    grep 'test' aa bb cc
    

    显示所有包含每个字符串至少有5个连续小写字符的字符串的行

    grep '[a-z]{5}' aa
    
    表示转义字符
    

    grep命令使用复杂实例

        明确要求搜索子目录:
        grep -r
        或忽略子目录
        grep -d skip
        如果有很多输出时,您可以通过管道将其转到’less’上阅读:
        itcast$ grep magic /usr/src/Linux/Documentation/* | less
        这样,您就可以更方便地阅读。
        有一点要注意,您必需提供一个文件过滤方式(搜索全部文件的话用 *)。如果您忘了,’grep’会一直等着,直到该程序被中断。如果您遇到了这样的情况,按 ,然后再试。
        下面还有一些有意思的命令行参数:
        grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
        grep -l pattern files :只列出匹配的文件名,
        grep -L pattern files :列出不匹配的文件名,
        grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),
        grep -C number pattern files :匹配的上下文分别显示[number]行,
        grep pattern1 | pattern2 files :显示匹配 pattern1 或 pattern2 的行,
        例如:grep "abc|xyz" testfile 表示过滤包含abc或xyz的行
        grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
        grep -n pattern files 即可显示行号信息
        grep -c pattern files 即可查找总行数
        还有些用于搜索的特殊符号:< 和 > 分别标注单词的开始与结尾。
        例如:
        grep man * 会匹配 ‘Batman’、’manic’、’man’等,
        grep ‘<man’ * 匹配’manic’和’man’,但不是’Batman’,
        grep ‘<man>’ 只匹配’man’,而不是’Batman’或’manic’等其他的字符串。
    

      

     

  • 相关阅读:
    HDU 2955 Robberies(01背包)
    HDU 2602 Bone Collector(01背包)
    HUST 1352 Repetitions of Substrings(字符串)
    HUST 1358 Uiwurerirexb jeqvad(模拟解密)
    HUST 1404 Hamming Distance(字符串)
    HDU 4520 小Q系列故事――最佳裁判(STL)
    HDU 2058 The sum problem(枚举)
    【破解】修改程序版权、添加弹窗
    HDU 1407 测试你是否和LTC水平一样高(枚举)
    HDU 1050 Moving Tables(贪心)
  • 原文地址:https://www.cnblogs.com/joanna123/p/12182239.html
Copyright © 2011-2022 走看看