4、grep与正则表达式

1、grep程序

  Linux下有文本处理三剑客  --  grep sed awk

  grep:文本 行过滤工具(一行一行进行匹配)

  sed:文本 行编辑器(一行一行编辑)

  awk:报告生成器,做输出格式化

  grep

    包含三个命令:grep egrep fgrep,它们是用来进行 行模式(pattern)匹配的

    egrep = grep -E   --  使用扩展的正则表达式进行匹配

    fgrep = fast grep  --  只使用文件通配符进行匹配

    grep默认使用正则表达式进行文本匹配

  

  grep的用法:

    grep [option] ... PATTERN [filename] 

    a*  --  以a开头的所有文件

  grep的常见选项  --  option

    -E 支持使用扩展的正则表达式

    -P 使用perl语言的正则表达式引擎进行搜索(每一种语言的正则表达式引擎都不相同,甚至sed grep awk使用的regexp引擎都是不同的)

    -i 忽略大小写

    -v 进行反选

    -o 仅仅输出匹配的内容

    --color=auto 语法着色

    -n 显示行号

    -w 匹配固定单词

  PATTERN -- 正则表达式

    作用:通过一些特殊字符,来表示一类字符内容,然后交给前面的命令来执行;如果使用特殊字符本身含义,就需要\进行转义

    回顾:文件通配符

      * ?任意单个字符 []范围内的任意一个字符 [^]取反

    1.字符匹配

      . 任意一个字符 (相当于文件通配符的?)

      [] 范围内的任意一个字符

      [^] 取反

      字符类:数字[:digit:] 字母和数字[:alnum:] 字母[:alpha:] 大写[:upper:] 小写[:lower:] 特殊字符[:punct:] 空白字符[:space:]

    2.次数匹配

      * 匹配前面紧挨着的字符0次到n次

      \?匹配前面紧挨着的字符0次到1次

      \+ 匹配前面紧挨着的字符1次到n次

      \{m\}匹配前面的字符m次

      \{m,n\} 匹配前面的字符m到n次

      \{0,n\} 匹配前面的字符0到n次

      \{m,\} 匹配前面的字符m到无数次

        [0-2][]

    3.位置锚定

      ^ 锚定行首

      $ 锚定行尾

      \b 锚定单词词首和锚定词尾(\b用在单词前面就是锚定词首,用在后面就是锚定词尾)

      \> 锚定词尾

      \< 锚定词首

    4.分组

      abc* abcccc abc我们要看成一个整体

      \(\) 示例:\(abc\)* abcabcabc

      **分组特性:默认情况下。linux系统会为分组制定变量,变量的表示形式为\1\2\3......

      \(ab+\(xy\)*\) 其中\1 = ab+\(xy\)*, \2 = xy

练习:

1、显示/proc/meminfo文件种大小s开头的行

  grep -i "^s" /proc/meminfo

2、显示

0-255.0-255.0-255.0-255

猜你喜欢

转载自www.cnblogs.com/lyali/p/11350785.html