L013-linux基础正则表达式手把手实战讲解小节

  这么一看又有10天没更新博客了,最近也一直在学就是时间比较闲散,再加上做上次老师留的十多道题,所以时间比较紧张,本来做完题准备直接先看L014讲解,然后再看正则表达式,但是发现L014老师讲解的过程中已经带正则了,无奈,跳跃性失败,重新开始,那么还是按L013的来把。

  本节内容不多,只有正则表达式而且仅仅是基础的linux下的正则表达式,基本上在三剑客(awk,sed,grep)上都适用。

下面代码中的红色为我自己加上的,为了方便查看,如果想自己也加上颜色可以使用 alias grep=‘grep --color=auto’

正则表达式:


那么正则表达式的概念是什么呢?

简单的说,正则表达式就是一套处理字符串的规则和方法,以行为单位对字符串进行处理,
通过特殊的符号的辅助,我们可以快速的过滤,替换某些特定的字符串。

运维工作中,会有大量访问日志,数据日志,大数据。如何快速的过滤我们需要的内容,就靠正则表达式

awk,sed,grep(egrep)三剑客要想能工作的更高效,那一定离不开正则表达的配合。

基础正则表达式:BRE
正则表达式就是一些特殊字符,赋予了他特定的含义。
1)^word 表示搜索以word开头的

[root@moban ~]# grep "^word" lcr.log
wordfjsdfdfk

2)word$ 表示搜索以word结尾的

[root@moban ~]# grep "word$" lcr.log
asdlkwsnfkjsdflksdfsdkword

3)^$ 表示空行

[root@moban ~]# cat .txt 

dadaadadasword
[root@moban ~]# grep -v "^$" .txt
dadaadadasword

4). 代表且只能代表任意一个字符

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "n.t" lcr.log
my god , my name is not oldbey , but OLDBOY.
not boog
net
nat
n6t
n.t

5)\ 转意符号,让着有着特殊身份意义的字符脱掉马甲,还原字面意义原型

6)* 重复0个或多个前面的一个字符 例:o* 可以零个o可以多个o

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "591*579" lcr.log
My qq is
my qq
my qq
my qq 59111111111579
591579
59579

7).* 匹配所有字符 例如:^.*以任意字符开头

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "^.*od" lcr.log
my god , my name is not oldbey , but OLDBOY.

8)[] 字符集合的重复特殊字符的符号

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "b[lo]og" lcr.log
My blog is http://lcr.blog.51cto.com
not boog

9)[^] 匹配不包含 例:[^word]匹配不包含^后的任意字符的内容
10) \{n,m\} 重复n到m次,前一个重复的字符 如果用egrep可以去掉斜线\

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "591\{1,4\}579" lcr.log
My qq is
my qq 591111579
591579

\{n,\} 至少n次到无限 如果用egrep可以去掉斜线\

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "591\{4,\}579" lcr.log
my qq
my qq
my qq

\{n\} n次 如果用egrep可以去掉斜线\

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep "591\{7\}579" lcr.log
my qq

扩展的正则表达式:ERE
1)+ 重复一个或一个以上前面的字符

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# egrep "591+579" lcr.log
My qq is
my qq
my qq
my qq 59111111111579
591579

2)? 重复0个或1个前面的字符

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# egrep "591?579" lcr.log
591579
59579

3)| 用或的方式查找多个符合的字符串

[root@moban ~]# egrep "3306|1521" /etc/services
mysql /tcp # MySQL
mysql /udp # MySQL
ncube-lm /tcp # nCube License Manager
ncube-lm /udp # nCube License Manager

4)() 找出“用户组”字符串

[root@moban ~]# cat lcr.log
I am oldboy linux student.
My blog is http://lcr.blog.51cto.com My qq is
my god , my name is not oldbey , but OLDBOY.
not boog my qq
my qq
my qq net
nat
n23t
n6t
n.t
wordfjsdfdfk
asdlkwsnfkjsdflksdfsdkword
[root@moban ~]# grep -E "b(lo|oo)g" oldboy.log
My blog is http://oldboy.blog.51cto.com
not boog

注意:用扩展的正则表达式用egrep 或者 grep -E

L013-linux基础正则表达式手把手实战讲解小节的更多相关文章

  1. Linux基础正则表达式:grep,sed

    先说明语系对正则表达式的影响    LANG=C:0,1,2,3,4...A,B,C,D...Z a b c d ... z    LANG=zh_CN:0,1,2,3,4...a A b B c C ...

  2. L014-第三关课前linux命令及基础知识考试手把手实战解答小节

    又是一周啊,以后保持一周一个微博吧. 这是一个堂解答考试题的课,那么就以题目来展开吧! 1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这 ...

  3. Linux Docker虚拟机入门实战讲解

    什么是Docker? Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目 前已有多个相关项目,逐渐形成了围绕 ...

  4. Linux基础-正则表达式整理---------------grep、sed、awk

    目录:    Ⅰ:正则表达式    Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...

  5. 0016.Linux基础之常用基本命令讲解

    开启linux系统,开启xshell pwd:printing workding directory 打印当前目录 /:代表根目录 cd:change directory 改变目录 ls:list 查 ...

  6. linux 基础正则表达式练习

    感谢鸟哥!!! 如果Linux能够直接连网络,使用以下命令还获取文件吧 wget http://linux.vbird.org/linux_basic/0330regularex/regular_ex ...

  7. Linux基础正则表达式字符汇整(characters)

    RE 字符 意义与范例 ^word 意义:待搜寻的字串(word)在行首! 范例:搜寻行首为 # 开始的那一行,并列出行号 grep -n '^#' regular_express.txt word$ ...

  8. L016-linux系统文件权限体系实战深入讲解小节

    L016-linux系统文件权限体系实战深入讲解小节 不知道今天能不能写完哈,能写完发出来就是这周发两次小结了,有进步哦,不过L015和L016两节课内容也确实不多,进入正题 上一课学到了chmod. ...

  9. linux正则表达式(基础正则表达式+扩展正则表达式)

    正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一 ...

随机推荐

  1. 【HNOI2009】梦幻布丁

    题目描述 N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3段颜色. 输入输出格式 输入格式 第一 ...

  2. webpack中使用babel处理es6语法

    index.js const arr = [ new Promise(()=>{}), new Promise(()=>{}) ]; arr.map(item => { consol ...

  3. selenium + python自动化测试unittest框架学习(七)随机生成姓名

    在自动化测试过程中经常要测试到添加用户的操作,每次都要输入中文,原本是找了十几个中文写成了列表,然后从列表中随机取出填入用户名文本框中,随着测试的增加,发现同名的人搜索出来一大堆,最后在网上找了个随机 ...

  4. PHP面试系列之Linux(一) ----- Linux基础

    一.系统安全 sudo:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行. su:用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码. ...

  5. linux下搭建禅道项目管理系统

    1.禅道下载:                 #官网:http://www.zentao.net/article-browse-1067.html [root@localhost ~]# wget ...

  6. UIWebView 获取网页标题

    - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *urlString = webView.request.URL.absolu ...

  7. cocos2d-x开发:服务端基础库封装

    元旦前面几天都在忙着面试,随后的几天也就一直在做服务端基础库开发方面的工作.对于服务端开发,是很久之前的事情了.那时候我还在大学读书,一直都是在倒腾服务端开发方面的东西,毕业后参加公司工作就是一直从事 ...

  8. Angular7教程-06-页面与数据交互

    1. 本节说明 本节的内容会在上期搭建的框架基础上进行数据的填充,顺便回顾之前介绍过的插值表达式,属性绑定等知识,本节的数据只是在组件中模拟数据,后面会有专门的章节讲解如何从服务器获取数据. 2. 轮 ...

  9. eclipse手动安装alibaba代码规范插件+取消阿里编码规约插件扫描出来的警告及错误

    如果你的开发环境无法访问外网,那么手动安装阿里巴巴的代码规范插件是一个不错的选择.另外,很多教程说该插件需要jdk1.8以上,我试了一下jdk1.7也是可以运行的,更低的版本就不知道了,貌似jdk1. ...

  10. MySQL学习【第十二篇事务中的锁与隔离级别】

    一.事务中的锁 1.啥是锁? 顾名思义,锁就是锁定的意思 2.锁的作用是什么? 在事务ACID的过程中,‘锁’和‘隔离级别’一起来实现‘I’隔离性的作用 3.锁的种类 共享锁:保证在多事务工作期间,数 ...