grep正则表达式详解

grep:(global search regular expression(RE)and print out the line)

文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,并显示匹配的行

格式:grep [options] 'PATTERF' file,默认只支持基本正则表达式,要匹配额外功能的字符用-E
选项:
  --color 指定颜色
  -v:反向匹配,显示不能被模式匹配到的行
  -o:仅匹配被模式匹配到的字串,而非整行
  -i:不区分大小写,ignore-case
  -E:支持扩展
  -A #:还显示模式下面的一行
  -B #:还显示模式上面的一行
  -C #:前后各显示一行


正则表达式:是一类字符所书写出的模式(pattern)
    元字符:类似统配符,不表示字符本身的意义,用于额外功能性的描述

    基本正则表达式和扩展正则表达式
    基本正则表达式的元字符:
        .:任意单个字符
    []:指定范围内的任意单个字符
     [0-9],[[:digit:]]
     [a-z],[[:lower:]]
     [A-Z],[[:upper:]]
     所有的字母:[[:alpha:]]
     字母+数字:[[:alnum:]]
     空格:[[:space:]]
     标点符号:[[:putct:]]
    [^]: 指定范围外的任意单个字符
     次数匹配:用来指定匹配其前面的字符的次数
        *:任意次
       例子:x*y xxy xy y 都能匹配
        .*:匹配任意长度的任意字符
    \?:前面字符出现0次或者1次的
    \{m\}:匹配m次
    \{m,n\}:至少m次,至多n次
    \{m,\}:至少m次
    \{0,n}:至多n次
     做变量换算需要使用”“
   贪婪模式:尽可能的长的去匹配字符:

   位置锚定:用于指定字符出现的位置
       ^:锚定行首
         ^Char
       $:锚定行尾
          grepchar$
    ^$:空白行
    单词的位置锚定
    \<char :锚定词首,\b
    char\> : 锚定词尾,char\b
    分组:
    \(\)
      \(ab\)*xy
     引用:
         \1:后向引用,引用前面的第一个左括号以及与之对应的右括号中的模式匹配到的内容,意思是说前面出现一次,在\1这也要出现一次
 
      
练习:
1、显示/proc/meminfo文件中的以大小写s的开头的行
grep -i "^s" /proc/meminfo
2、取出默认shell为非bash的用户
grep -v "bash$" /etc/passwd |cut -d: -f1
3、取出默认shell为bash的且其ID号最大的用户
grep "bash$" /etc/passwd |cut -d: -f1|sort -n -t: -k3|tail -1
4、显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行
 grep "^#[[:space:]]\{1,\}[^[:space:]]\{1,\}" /etc/rc.d/rc.sysinit
5、显示/boot/grub/grub.conf中以至少一个空白字符的行
grep "^[[:space:]]\{1,\}" /boot/grub/grub.conf
6、查出/etc/passwd中一位数或两位数
grep --color=auto "\<[0-9]\{1,2\}\>" /etc/passwd
7、找出ifconfig命令结果中的1到255之间的整数
 ifconfig |grep -E --color=auto "\<([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>"
8、查看当前系统上root用户的所有信息
grep “\<root\>”/etc/passwd
9、添加用户bash和testbash,而后找出当前系统上于其他用户名和默认shell相同的用户
grep “^\([[:alnum:]]\{1,\}\)\>.*\1$” /etc/passwd
10、找出netstat -tan命令执行的结果中以“LISTEN”或“ESTABLISHEN”结尾的行
metstat -tan |grep -E “(LISETN|ESTABLISHED)[[:space:]]*"
11、取出当前系统上所有用户的shell,要求:每种shell中显示一次,且升序排序显示
cut -d: -f7 /etc/passwd|sort -u
挑战题:


grep egrep fgrep
egrep:使用扩展正则表达式来构建模式,相当于 grep -E
     元字符:
      字符匹配:
      .:任意单个字符
      []:指定范围内的任意单个字符
      [^]:指定范围外的任意单个字符
      次数匹配
       *:匹配器前面的字符任意次
       ?:匹配器前面的字符0或1次
       +:匹配其前面字符至少一次
       {m}:匹配其前面字符m次
       {m,n}:至少m次,至多n次
       {m,}:至少m次
       {0,n}:只读n次
       分组:
       ():分组
       |:或者,ac|bc ac或者bc

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29620572/viewspace-1788064/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29620572/viewspace-1788064/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值