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. 随手练——POJ - 2676 数独 (回溯法)

    POJ - 2676 : http://poj.org/problem?id=2676: 解题思想 (大力出奇迹): 1. 依次在空格里面填上“1~9”,并检查这个数字是否合法(其所在的行.列,以及3 ...

  2. MyBatis(1)-简单入门

    简介 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.My ...

  3. ethereumjs/merkle-patricia-tree-1-简介

    https://github.com/ethereumjs/merkle-patricia-tree SYNOPSIS概要 This is an implementation of the modif ...

  4. openssl生成iis需要的pfx格式的证书

    合成.pfx证书 将私钥文件(server.key)和服务器crt证书文件(server.crt ),放到openssl安装目录的bin目录下. 控制台也进到此目录下,然后执行下面指令. openss ...

  5. ubuntu配置telnet服务

    1.安装xinetd 以及telnetd #:~$ sudo apt-get install xinetd telnetd 2.配置文件(若文件不存在就手动添加文件和相应配置信息) 1): #:~$ ...

  6. 【CSS-移动端响应式布局详解】

    背景 移动端响应式布局开发主要方案有: 基于rem开发 基于媒体查询 基于弹性盒 基础概念 在讨论响应式布局知识前,先了解下移动端常用基础概念. 逻辑像素(CSS pixels) 浏览器使用的抽象单位 ...

  7. MongoDB常用指令

    db 查看当前操作的数据库 show dbs 显示所有数据库 show collections 显示当前数据库下的所有集合 use database_name 连接到一个名叫[database_nam ...

  8. Java监听器原理及实例

    一.监听器原理 监听器是基于事件驱动的,用于对操作事件进行监听.处理,是观察者设计模式的应用 监听器三元素: 2.1 事件源:事件发生的源头 2.2 事件:对事件进行抽象.封装 2.3 监听器:用于监 ...

  9. Eclipse部署Web项目,常用操作和常见错误的解决方案

    部署Web项目到tomcat 在eclipse中找到Servers项,打开服务器(F3)(建议直接删除服务器,重新建立再设置比较好)1.Servers Locations 中选择Use Tomcat ...

  10. hdu Exponentiation高精度实数乘幂(用了带小数的高精度模板)

    #include <cstdio> #include <cstring> #include <iostream> #include <cmath> #i ...