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

shell下的grep工具

[复制链接]

尚未签到

发表于 2018-8-23 10:28:36 | 显示全部楼层 |阅读模式
  一. grep
  grep(Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,将匹配的行打印出来,但是并不影响原文件的内容;并且通过返回值来通知搜索结果,如果命令的退出码为0则表示搜索成功返回值为1则表示搜索不成功如果搜索的文件不存在,则会返回2;因此利用这些返回值就可以进行相应的文本处理工作。
  对于grep来说,其工作模式有两种:一种是Basic模式,在该模式下,其命令参数的正则表达式中对于字符'()'、'{ }'、'|'、'?'、'+'这五种字符都只是取其普通含义,如果需要使用其特殊含义需要加上转义字符'\'来对其进行转义,另外,如果不想进行转义,加上-E选项将其改为Extended模式就可以了;而对于另外一种Extended模式,表示是grep的扩展,这些字符都被解释为代表的特殊含义,而同样的,如果想要取其普通的字面意思,也可以使用转义字符'\'来转义;使用egrep命令相当于使用grep加上-E选项;
  二. 正则表达式
  既然grep是用来进行文本搜索的,如果对于要搜索的内容很明确,那么就可以直接在其后跟上明确的一串字符,但是如果有时候对于要搜索的内容并不是很具体,也就是需要在指定的文件中找出满足某个或者某些条件的内容,比如我需要找出所有满足正确IP地址的一串字符,格式当然就如“XXX.XXX.XXX.XXX”,那么就需要交给grep一个‘条件’,这个条件就告诉grep,我需要什么样的内容你都给我找出来,而这个‘条件’中,使用一些特殊语法来表示字符类、数量限定符和位置限定符,然后用这些特殊语法和普通字符一起表示一个模式,这就是正则表达式
  字符类表示某一个字符范围中的某一个字符;
DSC0000.png

  如下举例:
DSC0001.png

  
  数量限定符表示对于字符的数量限定;
DSC0002.png

DSC0003.png

  如下举例:
DSC0004.png

DSC0005.png

  
  位置限定符表示对于字符出现位置的一个限定;
DSC0006.png

  如下举例:
DSC0007.png

  其他特殊字符:
DSC0008.png

  如下举例:
DSC0009.png

  三. grep常用命令选项
  grep用法:grep [选项]... PATTERN [FILE]...
  在每个FILE或是标准输入中查找PATTERN,默认的PATTERN是一个基本的正则表达式(缩写为BRE);
  如下栗子都使用文件file:
DSC00010.png

  -G 表示PATTERN是一个基本的正则表达式,默认就是这种模式;
  -E 表示PATTERN是一个可扩展的正则表达式,也就是对于‘?+|{}()’这五类字符都取其特殊含义;
DSC00011.png

  -F 表示正则表达式不可用,PATTERN是一组用断行符分隔的定长字符串;
DSC00012.png

  -f表示从FILE中取得PATTERN,也就是指定匹配文件,让grep查找符合匹配模式的文件内容;
DSC00013.png

  -i忽略大小写的匹配模式;
DSC00014.png

  -w表示PATTERN仅完全匹配字词,也就是只将PATTERN看做一个完整的单词来匹配;
DSC00015.png

  -x 强制PATTERN仅完全只匹配一行,也就是PATTERN满足为一行的内容;
DSC00016.png

  -s不显示没有匹配项或者文件的错误信息;
DSC00017.png

  -v显示出不满足匹配条件的所有内容;
DSC00018.png

  -V显示版本号;
DSC00019.png

  -m表示从输入中匹配的最大数;
DSC00020.png

  -b打印出输出匹配行第一个字符的位编号;
DSC00021.png

  -n显示匹配行及其行号;
DSC00022.png

  -H 表示搜索多个文件时,前缀显示文件名;
  -h表示搜索多个文件时,不显示文件名前缀;
DSC00023.png

  -o 只显示匹配的内容;
DSC00024.png

  -q 匹配成功与否,都不显示任何内容,只通过状态码来告知匹配结果
DSC00025.png

  -D对于设备比如管道或者套接字的处理,如read和skip;
  -d 对于文件或文件夹的处理,如read、recurse、skip;
DSC00026.png

  -r -R递归调用;
DSC00027.png

  -l只显示匹配成功的文件名;
  -L只显示未匹配成功的文件名;
DSC00028.png

  -c统计出匹配的行数;
DSC00029.png

  -A 打印出匹配行及其前面特定的行;
  -B打印出匹配行及其后面特定的行;
  -C打印出匹配行及其前后各自特定的行;
DSC00030.png

  当然,如果想要查看grep其他的一些更为具体的命令的选项和使用,通过grep --help命令就可以查看;--color表示给匹配项加上颜色便于观察;
  《完》


运维网声明 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-555443-1-1.html 上篇帖子: shell多线程 下篇帖子: shell 十三問?[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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