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

shell下正则表达式与其工具grep

[复制链接]

尚未签到

发表于 2018-8-28 06:35:36 | 显示全部楼层 |阅读模式
  一.grep相关知识
  1.grep
  grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
  2.grep工作原理
  grep有两种模式:Basic和Extend模式。
  在Basic模式下,命令直接grep ,其中的?、+、{}、|、()都被解释为普通字符,如果要使用其的特殊意义,就必须对其用转义字符进行转义。
  在Extend模式下,命令grep-E,其中的?、+、{}、|、()都是特殊字符,要匹配时必须用转义字符将其转义,变为普通字符。
  grep命令在一个或多个文件中查找某个字符模式,如果这个模式中包含空格,就必须用引号把它括起来。grep命令中,模式可以是一个被引号括起来的字符串,也可以是单个词。位于模式之后的所有单词都被视为文件名。grep将输出发送到屏幕,它不会对输入文件进行任何修改或变化。grep返回的退出状态为0,表示成功。退出状态为1,表示没有找到。如果找不到指定的文件,退出状态为2。
  3.grep工具选项
  常用的grep选项:
  grep-i:匹配时忽略字母大小写
  grep-n:列出所有匹配的文本行,并显示行号
  grep-v:只显示不匹配的文本行
  grep-w:匹配整个单词
  grep-x:匹配整个文本行
  grep-c:只打印匹配的文本行的行数,不显示匹配内容
  不常用的选项:
  grep-l:只列出含有匹配的文本行的文件的文件名,不显示匹配内容
  grep-h:搜索多个文件时,不显示匹配文件名前缀
  grep-s:不显示关于不存在或者无法读取文件的错误
  grep-r:递归搜索,不仅搜索当前目录,还搜索各级子目录
  grep-q:禁止输出任何匹配结果,而是以退出码状态的形式表示是否匹配成功,其中0表示找到了匹配的文本行
  grep-P:支持Perl正则表达式
  grep-F:不支持正则表达式,将模式按字面意义进行匹配
  grep-b:打印匹配的文本行到文件投的偏移量,以字节为单位
  二.正则表达式
  1.正则表达式:简单来说就是通过描述某种规则,用这种规则去匹配信息。正则表达式一般要用单引号括起来
  正则表达式的三要素:数量限定符、位置限定符和字符类
  2.三要素
  1>字符类:描述匹配字符信息
   DSC0000.png
  2>数量限定符:用来描述匹配字符数量
  其中?、+、*这三个较为重要
   DSC0001.png
  3>用来描述匹配字符位置信息
  其中常用的是^ 和$
   DSC0002.png
  三.正则表达式结合grep工具的具体例子
  1.数量限定符例子(常用的)
  1>使用? 前导单元出现0次或一次
   DSC0003.png
  2>使用+   前导单元出现1次或多次
   DSC0004.png
  3>使用*  紧跟前面的单元出现0次或多次
   DSC0005.png
  2.字符类的例子(常用的)
  1>使用 . 匹配任意一个字符
   DSC0006.png
  2>使用[] 匹配括号里任意一个字符
   DSC0007.png
  3>使用^  匹配除中括号内的任意一个字符
   DSC0008.png   
  3.位置限定符的例子 (常用的)
  以file文件里内容为例
   DSC0009.png
  1>^ 匹配行首位置
  以hel开头的行
   DSC00010.png
  
  2>$ 匹配行末位置
  以t结尾的行
   DSC00011.png
  4.混合起来复杂的运用
  file文件里存ip信息
   DSC00012.png
  
  1>去粗略匹配一个ip地址
  用命令匹配
   DSC00013.png
  由于grep-E是Extend模式,.是特殊字符,而要对其匹配就必须转义
   DSC00014.png
  ()将正则表达式的一部分括起来组成一个单元,然后去匹配
  2>写一个shell脚本去匹配file里的ip
  shell脚本:
   DSC00015.png
  count 用来计数匹配到的ip地址的个数
  运行结果:
   DSC00016.png
  
  
  
  
  
  
  
  
  
  
  
  
  



运维网声明 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-557412-1-1.html 上篇帖子: shell --- grep 命令详解 下篇帖子: shell脚本:简单的分数记录系统
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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