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

Shell 正则表达式 基础

[复制链接]

尚未签到

发表于 2018-8-28 11:56:43 | 显示全部楼层 |阅读模式
  一、linux文本查找命令
  三个基本常用的命令
  1、grep:最早的文本匹配程序,使用POSIX定义的基本正则表达式(BRE)来匹配文本
  2、egrep:扩展式grep,其使用扩展式正则表达式(ERE)来匹配文本
  3、fgrep:快速grep,这个版本匹配固定字符串而非正则表达式。
  二、grep的基本语法
  GREP [options … ] pattern-spec [files…]
  用途:匹配一个或多个模式的文本行
  options:
  -E:使用扩展正则表达式进行匹配
  -i:忽略大小写
  --color 加以颜色可以添加别名
  laias gerp ='grep --color'
  -v:反向显示,没有被模式匹配到的行
  -o:只显示被模式匹配到的字符串
  -A(后面加数字):找到行显示行后面的n行

  grep -A 2 '^core>  -B(后面加数字):找到行显示前面的n行

  grep -B 2 '^core>  -C(后面加数字):找到行的前后n行

  grep -C 2 '^core>  三、简单介绍
  组成部分:一般字符:没有特殊意义的字符
  特殊字符:也称meta字符,元字符,在正则表达式中有特殊的意义
  常见的元字符:
  \ :通常用于打开或者关闭后续字符的特殊含义,如\(…\)与\{…\}
  . :匹配任意单个字符(除NUL)
  *  :   匹配前面的字符任意次
  .* :任意长度的任意字符  例如:  a.*b:  以字母a开头
  [] :匹配指定范围内任意单个字符
  [^] :匹配指定范围外的任意字符
  \? :匹配前面的字符0次或者1次
  \{…\} :匹配前面的字符1次或者0次
  例如:   \{0,1\}  匹配一次
  grep 'a\{2,3\}' aa.txt
  grep 'a.\{2,3\}' aa.txt
  egrep:
  + : 匹配前面的正则表达式1个或者多个扩张
  | :匹配|前或者后的正则表达式
  ( ):匹配方刮号起来的正则表达式群   ([])
  位置锚定:
  ^ :锚定行首,此字符后面的任意内容必须出现在行首
  $:锚定行尾,此字符前面的任意字符必须出现在行尾
  ^$:空白行
  \:其前面的任意字符必须作为单词的尾部出现
  \
  实例:    grep '\' aa.ttx   grep '\' aa.ttx
  分组:\(\)
  \(ab\)*   匹配ab
  向后引用
  \1:引用第一个左刮号以及与之对应的右刮号内的所有内容
  \2:引用第二个左刮号以及与之对应的右刮号内的所有内容
  \3:引用第三个左刮号以及与之对应的右刮号内的所有内容
  \4:引用第四个左刮号以及与之对应的右刮号内的所有内容
  实例:grep '\([0-9]).*\1$' aa.txt
  四、grep\egrep\fgrep 之间的关系
  grep:在没有参数的情况下,只输出符合RE字符串之句子,常见的参数在“一”中
  egrep:为grep的扩充版,改良了许多传统的grep不能或者不便的操作;such as:
  --- grep 之下不支持?与+这两种字符,但是egerp可以得
  --- grep  不支持a|b 或则 (abc | xyz) 这类“或一”比对,但是egerp可以
  --- grep 在处理{n,m}时,需要{与}处理,但egrep不需要
  五、字符集
  [:alnum:]  数字字符    [:digit:]  数字字符  [:punct:]  标点符合字符   [:alpha:]   字母字符
  [:graph:]   非空字符    [:space:] 空格字符  [:blank:]   空格与定位字符  [:lower:]  小写字母
  [:upper:]   大写字符   [:cntrl:]  控制字符   [:print:]  可显示的字符    [:xdigit:] 16进制数字
  六、实例
  1、 grep 'h.\{0,4\}p$' a:匹配a文件中任意字符至少0次之多4次
  2、 grep 'h.\{1\}p$' a   :匹配a文件中任意字符1次
  3、 grep 'h.\{1,\}p$' a  :匹配a文件中任意字符至少1次
  4、  grep -o -E'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' grub.cfg  搜索IP地址
  5、 grep  --color -E'C|cat' a.txt
  6、 ls  |  grep '[[^[:space:]]*[0-9]'   显示以数字结尾但是不包含空白的文件。
  7、关于grep和egrep
  如下通过常用实例来学习BRE和ERE匹配,源文件url.txt内容如下:
  www.baidu.com
  http://www.baidu.com
  https://www.baidu.com
  http://wwwbaiducom
  baidu.com
  baidu
  匹配以http或者https开头,并且其后为:并且含有.的串
  BRE匹配:
  grep '^https\{0,1\}.*\..*' url.txt
  ERE匹配:
  grep -E '^https?.*\..*' url.txt
  匹配结果如下:
  http://www.baidu.com
  https://www.baidu.com


运维网声明 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.iyunv.com/thread-557697-1-1.html 上篇帖子: shell 中的$* $# $@的含义 下篇帖子: shell中 括号的作用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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