0409 第十一次课:三剑客-grep

正则_grep

1、正则介绍

  • 正则就是一串有规律的字符串,包括各类特殊符号
  • 掌握正则对于编写shell有很大帮助
  • 各类编程中都有正则,原理是同样的

2、grep

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。php

  • grep用法正则表达式

    grep [-cinvrABC] 'word' filenameshell

    参数说明:express

    参数 说明
    -c 统计
    -n 显示行
    -i 不区分大小写
    -r 遍历全部的子目录
    -v 取反
    -A 后面跟数字,过滤出符合要求的行及下面n行
    -B 后面跟数字,过滤出符合要求的行及上面n行
    -C 后面跟数字,过滤出符合要求的行及上下n行
  • 经常使用示例编程

    一、匹配字符并显示行号工具

    grep -n "root" /etc/passwd code

    二、匹配非"root"行并显示行号blog

    grep -vn "root" /etc/passwdci

    三、匹配“root”行,并显示下面两行。文档

    grep -A2 -n 'root' /etc/passwd

    四、匹配“root”行,并显示上面两行

    grep -B2 -n 'root' /etc/passwd

    五、匹配“root”行,并显示上下两行。

    grep -C2 -n 'root' /etc/passwd

    六、区分不大小写显示

    grep -i "A" 1.txt

    七、遍历全部子目录匹配

    查找root目录下全部包含“root”的文件并显示出来

    grep -r "root" /root/

  • grep正则操做

    一、匹配带数字的行

    grep [0-9] /etc/passwd

    [0-9]就是0到9的意思

    二、匹配以非“#”开头的行

    grep -v '^#' 1.txt

    三、匹配全部非数字

    grep '[^0-9]' 2.txt

    把^符号放在[]中就是非的意思。

    四、匹配全部非数字开头的行

    grep '^[^0-9]' 2.txt

    五、匹配全部“rxot”的行,”"."表明任意一个字符

    grep "ro.t" 1.txt

    六、多个字母匹配

    grep 'o*o' passwd

    ""表明左边的字符重复0-n次,也就是一个o也会匹配,ooo....多个也会匹配

    七、贪婪匹配

    grep '.*' 1.txt

    "."表示贪婪匹配,全部的都会被匹配。“.”表示一个任意字符,“”表明*左边的字符重复0-n次,加在一块儿就是匹配全部的就叫贪婪匹配。

    八、指定字符出现次数匹配

    grep 'o\{2\}' 1.txt

    {2}表示出现的次数,o是指指定的字符。\表示脱意

  • egrep

    在grep中使用+ {} () | 须要时\进行脱意。不想脱意可使用 egrep 或者 grep -E

  • 其它一些符号使用

    示例:

    一、()组合字符

    egrep '(oo){2}' 1.txt

    ()表示组合的意思

    二、“+”匹配

    +相似于*,不一样的是+是1-n次,*是0-n次,以下图单个o不会被匹配到

    三、“?”匹配

    ?表示左边字符的重复次数为0或者1

    grep 'o\?t' 1.txt

    四、 “|” 符号或者匹配

    '|'表示或者,好比root|tes就是匹配‘root’或者‘test’的意思

    grep -E 'root|test' 1.txt

  • 扩展

    过滤一个目录下全部*.php文档中含有eval的行。

    grep -r --include "*.php" 'eval' /usr/local/php/

相关文章
相关标签/搜索