设为首页 收藏本站
查看: 704|回复: 0

[经验分享] linux学习之grep egrep 命令及正则表达式

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-24 10:04:24 | 显示全部楼层 |阅读模式
有幸在马哥面授班学习linux,马哥常告诉我们要做就做到最好,希望通过这些博文把自己的学习经历和内容好好的记录下来,也算是复习。
grep: Global search REgular expression and Print out the line.
文本搜索工具,根据用户指定的“模式(pattern)”对目标文本进行过滤,显示被模式匹配到的行。
grep [OPTION]... 'PATTERN' FILE...
  --color
正则表达式:由一类字符书写的模式,其中有些字符不表示字符的字面意义,而是表示控制或通配的功能;
  元字符:
  两类:
   基本正则表达式
   扩展正则表达式
基本正则表达式:
  字符匹配:
    .: 匹配任意单个字符
   []:匹配指定集合中的任意单个字符
      [[:digit:]], [0-9]
      [[:lower:]], [a-z]
      [[:upper:]], [A-Z]
      [[:alpha:]], [a-zA-Z]
      [[:alnum:]], [0-9a-zA-Z]
      [[:space:]],空白字符
      [[:punct:]],标点符号
   [^]:匹配指定集合外的任意单个字符
  匹配次数:用于对其前面紧邻的字符所能够出现的次数作出限定
   *: 匹配其前面的字符任意次,0,1或多次;
    例如:grep 'x*y'
     xy, xxy, xxxy, y
   ?:匹配其前面的字符0次或1次;
    例如:grep 'x?y'
     xy, xxy, y, xxxxxy, aby
   +: 匹配其前面的字符出现至少1次;
   {m}: 匹配其前面的字符m次;
    例如:grep 'x{2}y'
     xy, xxy, y, xxxxxy, aby
   {m,n}:匹配其前面的字符至少m次,至多n次;
    例如: grep 'x{2,4}y'
      xy, xxy, y, xxxxxxy, aby
       grep 'x{0,4}y'
        xy, xxy, y, xxxxxxxxxy, aby
       grep 'x{2,}y'
        xy, xxy, y, xxxxxy
   .*: 匹配任意长度的任意字符
  位置锚定:
   ^: 行首锚定
    写在模式的最左侧
   $: 行尾锚定
    写在模式的最右侧
   ^$: 空白行
   <: 词首锚定, 或
    出现在要查找的单词模式的左侧;<char
   >:词尾锚定, 或
    出现在要查找的单词模式的右侧;char>
   : 匹配单词
  分组: ()同时匹配多个字符
        例如:'ab{1,3}x'  可以匹配abx  abbx   abbbx
                 '(ab){1,3}x' 可以匹配abx  ababx  abababx
   后向引用:模式中,如果使用()实现了分组,在某行文本的检查中,如果()的模式匹配到了某内容,此内容后面的模式中可以被引用;
    , , 
    模式自左而右,引用第#个左括号以及与其匹配右括号之间的模式匹配到的内容;
grep选项:
  -v: 反向选取
  -o: 仅显示匹配到内容
  -i: 忽略字符大小写
  -E: 使用扩展正则表达式
  -A #: 匹配到的行向下多显示#行
  -B #:匹配到的行向下多显示#行
  -C #:匹配到的行向上向下多显示#行

扩展正则表达式:
        和基本正则表达式大同小异,一般在匹配时无需加转义符,只有几个特定的需要加转义
        *,?,+,{m},{m,n},^,$,<,>,,
        条件选择:a|b



练习:
1、显示/proc/meminfo文件中以大写或小写S开头的行;
wKiom1RyBO7hLvYoAAEmGSdzako520.jpg

2、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户
wKioL1RyBWyBVa6OAAG4wUWzZOY635.jpg
3、显示/etc/passwd文件中其默认shell为/bin/bash的用户;
    并上述结果中其ID号最大的用户;  
wKiom1RyBO-QRfjuAAGdvGiMB_g193.jpg
4,找出当前系统上其用户名和默认shell相同的用户

wKioL1RyBW6gyoowAAENihiIgQE185.jpg

5,找出/etc/passwd文件中的一位数或两位数;
wKiom1RyBPLhrb48AAMXu-qfGas665.jpg

6,显示/boot/grub/grub.conf中以至少一个空白字符开头的行;
wKioL1RyBXHyEfzkAAEWJ9RV0Ck234.jpg

7,显示/etc/rc.d/rc.sysinit文件中,以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;

wKioL1RyBXSzbggoAAJUCnGNXkI650.jpg


</char

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-33553-1-1.html 上篇帖子: Linux基础之命令获取帮助的方法暨man命令使用 下篇帖子: linux命令行发邮件的方法 linux 表达式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表