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三剑客要想能工作的更高效,就一 ...
随机推荐
- [CQOI2017]小Q的表格
题目 神仙题,神仙题 这是一道很适合盯着发呆的题目 看到这个规律 \[ f(a,b)=f(b,a) \] \[ b\times f(a,a+b)=(a+b)\times f(a,b) \] 这也没什么 ...
- 4、RabbitMQ-消息应答与消息持久化
消息应答( Message acknowledgment) 1. Message acknowledgment(消息应答) 执行任务可能需要几秒钟.你可能想知道如果其中一个消费者开始一项长期任务并且只 ...
- sublime text 3 搭建python ide
SublimeCodeIntel 代码提示插件 安装步骤: 1.打开Package Control[Preferences>>Package Control] 2.输入 install 选 ...
- servlet入门与进阶
servlet入门与进阶 1.servlet基础认知 Servlet(Server Applet):全称Java Servlet,是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据, ...
- php编译安装报错
Cannot find OpenSSL's <evp.h> 解决方法: 下载openssl-1.1.0h.tar 包 [root@localhost ~]# cd openssl-1.1 ...
- JS模拟Dictionary
function Map() { this.keys = new Array(); this.data = new Array(); //添加键值对 this.set = function (key, ...
- 【星云测试】开发者测试-采用精准测试工具对Spring Boot应用进行测试
简介:本文主要介绍把现今主流的springboot框架项目和精准测试工具进行结合和应用,通过精准测试的数据穿透.数据采集.测试用例与代码的双向追溯.数据分析等一系列精准测试的特有功能,达到对项目质量的 ...
- nodejs( koa2 )配置 browserHistory
前言 既然能搜到并且还点进来看这篇文章, 那么肯定是知道后台为什么要配置 browserHistory, 也肯定知道为什么非要去用相对来说更麻烦的吧browserHistory, 而不用更简单点的不需 ...
- 推荐一个网址:在线检查Yam文件语法格式的错误
最近在学习Docker和K8S内容时候,经常会遇到要自己写一些容器部署或者组件部署的yaml文件. 但是苦于没有彻底熟悉yaml,有时候要到kubectl creat -f path 部署命令执行后, ...
- IDEA导入eclipse项目并部署到tomcat
1.首先引入本地项目 我这里是maven项目就直接选择的以maven项目引入,如果选eclipse的话,pom文件不会被初始化,部署tomcat会出问题 这项选完后,就一路next,jdk可以在引入的 ...