grep正则表达式

grep的正则表达式(regexp)

1、grep程序:

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

           grep:文本 行过滤工具

           Sed:文本 行生成器

           awk:报告生成器(做文本输出格式化)

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

           egrep =grep –E//使用文件通配符进行匹配

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

grep的用法:

           grep[option]…PATTERN[filename]

grep的常见选项:

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

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

           -i 忽略大小

           -v 进行反选

           -o 仅仅输出匹配的内容(默认输出的是匹配到的行)

           --color=auto 语法着色

           -n 显示行号

           -w //匹配固定单词

PATTERN—正则表达式:

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

回顾:文件通配符(globbing): *? [ ] [ ^ ]

1、字符匹配

           . 任意一个字符 ?

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

           [ ^ ] 范围外任意一个字符

           [0-9] [:digit:][: alnum:][:alpha:][:lower:][:upper:][:space:][:punct:]

2、次数匹配

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

           ?匹配前面的字符0次到1次

           + 匹配前面的字符1次到n次

           {m} 匹配前面的字符m次   例:a{7}   aaaaaaa

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

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

           {m,} 匹配前面的字符至少m次

3、位置锚定 

           ^锚定行首

           $锚定行尾

            锚定词首和锚定词尾

           >锚定词尾

           <锚定词首   <root/>

4、分组   

           Abc* abccc abc我们要看成一个整体

           ()示例:(abc)* abcabcabc abcccc

           **分组特性:默认情况下,Linux系统会为系统指定变量,变量表示形式123…

           例如:(+)

ip地址: 0-255.0-255.0-255

           0-255

           2 0-4 0-9[0-4][0-9]

           2 5 0-5  25[0-5]

练习:

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

      /grep –I “/^s” /proc/meminfo

2、显示/etc/passwd文件中不以/bin/bash结尾的行

      /grep –v’’/bin/bash$” /etc/passwd

3、显示/etc/passwd文件中UID号最大的用户的用户名

     sort –n –t: -k3 /etc/passwd |tail -1 |cut –d: -f1

4、如果用户root存在,显示其默认的shell程序

      grep “^root>” /etc/passwd&> /dev/null&&grep “root>” /etc/passwd|cut –d: f7

      id root &> /dev/null&&grep “^root>”/etc/passwd|cut d: -f7

5、找出/etc/passwd中的两位或三位

      grep”[0-9]{2-3}” /etc/passwd

       -w //匹配固定单词

       <[0-9]{2,3}>

       [0-9]{2,3}

-n 以数字进行排序.*任意字符

原文地址:https://www.cnblogs.com/wsq-qq/p/11350929.html