LINUX学习—grep和正则表达式(LINUX三剑客)

grep, egrep, fgrep

grep(GLOBAL RESEARCH)

是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。根据模式,搜索文本,并将符合模式的文本行显示出来。只能使用基本正则表达式 要使用扩展正则表达式需要-E
pattern: 由文本字符和正则表达式的元字符组合而成的匹配条件
语法:grep [option] pattern [FILE…]
1. Option:

    -w:只显示全字符符合的列;  
    -i:忽略大小写;  
    --color:将匹配到的文本加以颜色显示;   
    -v:反向查找,即显示没有被匹配的行;  
    -o:只显示被模式匹配到的字符串;
    -E:使用扩展正则表达式;  
    -A n:表示显示匹配到的字符其后n行;  
    -B n:表示显示匹配到的字符其前n行;  
    -C n:表示显示匹配到的字符其前后各n行; 

2. Pattern
正则表达式:Regular Expression, REGEXP
正则表达式是对字符串操作的一种逻辑公式,即用事先定义好的一些特定字符及这些特定的字符组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
主要是对字符串(包括普通字符如a-z间的字母)和特殊字符(如元字符)进行操作的一种逻辑公式
- 元字符:

        . :匹配任意单个字符  
        [ ]:匹配指定范围内的任意单个字符;  
        [^]: 匹配指定范围外的任意单个字符;  
  • 字符集合:
            [:digit:]:数字  
            [:lower:]:小写字母   
            [:upper:]:大写字母  
            [:punct:]:标点符号  
            [:space:]:空白字符   
            [:alpha:]:所有字母  
            [:alnum:] :所有数字  
            在使用这些字符集合是还需要用[ ]将其括起来即 [[:digit:]]
  • 匹配次数(贪婪模式):

    * :匹配其前面的字符任意次;a, b, ab, aab,acb,amnb; a*b可以匹配(b,ab,aab),其他的都不行;  
    

    .* :任意长度的任意字符
    \?:匹配其前面的字符1次或0次,使用时一般需要加转义字符\(有部分匹配就行,并不一定要求整行都匹配);
    {m.n}:匹配其前面的字符至少m次,至多n次; {1,} ; {0,3} ,没有上限可将n省略(花括号在linux中表示展开,用\对其进行转义)

  • 位置锚定:

    ^:锚定**行首**,此字符后面的任意内容必须出现在行首;  
    $:锚定**行尾**,次字符前面的任意内容必须出现在行尾;  
    ^$:空白行  
    

    \<或\b:其后面的任意字符必须作为单词首部出现,锚定词首 \

扩展正则表达式egrep:
  • 字符匹配:
    ./[ ]/[^]与基本正则表达式一致

  • 次数匹配:

    *:相同,匹配前面的字符任意次  
    ?:其前字符0次或1次,不用加\  
    +:匹配其前面的字符至少1次  
    {m, n}:不需要使用\   
  • 位置锚定字符都一样:
    ^ /$/ \

    ():分组,不需要加\  
      \1, \2, \3, .....
    |:或者  a|b  表示a或者b, C|cat表示C或cat而不是Cat或cat,分组可实现Cat或cat grep -E --color '(C|c)at' file  
    +:匹配其前面的字符至少1次  
    \.:表示对元字符进行转义,为其本身含义  

猜你喜欢

转载自blog.csdn.net/ihblxh/article/details/81980262