L013-linux基础正则表达式手把手实战讲解小节
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基础正则表达式手把手实战讲解小节的更多相关文章
- 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 ...
- L014-第三关课前linux命令及基础知识考试手把手实战解答小节
又是一周啊,以后保持一周一个微博吧. 这是一个堂解答考试题的课,那么就以题目来展开吧! 1.如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--为644,要求用命令获得644这 ...
- Linux Docker虚拟机入门实战讲解
什么是Docker? Docker是基于Go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司.Docker自开源后受到广泛的关注和讨论,目 前已有多个相关项目,逐渐形成了围绕 ...
- Linux基础-正则表达式整理---------------grep、sed、awk
目录: Ⅰ:正则表达式 Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...
- 0016.Linux基础之常用基本命令讲解
开启linux系统,开启xshell pwd:printing workding directory 打印当前目录 /:代表根目录 cd:change directory 改变目录 ls:list 查 ...
- linux 基础正则表达式练习
感谢鸟哥!!! 如果Linux能够直接连网络,使用以下命令还获取文件吧 wget http://linux.vbird.org/linux_basic/0330regularex/regular_ex ...
- Linux基础正则表达式字符汇整(characters)
RE 字符 意义与范例 ^word 意义:待搜寻的字串(word)在行首! 范例:搜寻行首为 # 开始的那一行,并列出行号 grep -n '^#' regular_express.txt word$ ...
- L016-linux系统文件权限体系实战深入讲解小节
L016-linux系统文件权限体系实战深入讲解小节 不知道今天能不能写完哈,能写完发出来就是这周发两次小结了,有进步哦,不过L015和L016两节课内容也确实不多,进入正题 上一课学到了chmod. ...
- linux正则表达式(基础正则表达式+扩展正则表达式)
正则表达式应用非常广泛,例如:php,Python,java等,但在linux中最常用的正则表达式的命令就是grep(egrep),sed,awk等,换句话 说linux三剑客要想能工作的更高效,就一 ...
随机推荐
- 转:日志组件logback的介绍及配置使用方法
转自:http://blog.csdn.net/zgmzyr/article/details/8267072 一.logback的介绍 Logback是由log4j创始人设计的又一个开源日志组件.lo ...
- (转)ci
1 从代码管理器签出源文件 2 修改代码 3 编译代码 4 遇到错误,转到2继续修改直到达到预期 5 运行单元测试,期望所有的测试绿色(通过) 6 单元测试出错,转入2 7 重构代码,按 ...
- php7.0编译安装
1.解压安装 tar zxvf php-7.0.2.tar.gz cd php-7.0.2 2.安装依赖库: yum -y install libjpeg libjpeg-devel libpng ...
- Gradle Goodness: Run a Build Script With a Different Name
Normally Gradle looks for a build script file with the name build.gradle in the current directory to ...
- 用jQuery-Easy-UI编写注册页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python - 流程控制基础习题
#打印1 到100 的和** i = 0 s = 0 while i <100: i += 1 s += i print(s) print('1+2+,,100=',s) #打印字符A~Z fo ...
- Vue聊天框默认滚动到底部
功能场景 在开发中,我们总能遇到某些场景需要运用到聊天框,比如客服对话.如果你不是一名开发人员,可能你在使用QQ或者聊天工具的时候并没有注意到,当你发出一条消息的时候,窗体会默认滚动到最底部,让用户可 ...
- MySQL架构与引擎初识
一.MySQL逻辑架构 1.连接层: 最上层是一些客户端和连接服务,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 2.服 ...
- jquery实现漂亮的轮播图
今天工作中要用到一个轮播功能,在网上找了一些,觉得有些过于繁琐,于是自己动手写了一个,效果如图: 代码如下: <!DOCTYPE html> <html lang="en& ...
- Redis之Redis消息订阅发布简介
概念: Redis消息订阅发布是进程间的一种消息通信模式,发送者pub发送消息,订阅者sub接收消息. 使用须知: 需要先订阅后发布,才能接收到消息.在订阅时,相当于创建了可供发布的频道. 案例: ( ...