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三剑客要想能工作的更高效,就一 ...
随机推荐
- BZOJ4807:車(组合数学,高精度)
Description 众所周知,車是中国象棋中最厉害的一子之一,它能吃到同一行或同一列中的其他棋子.車跟車显然不能在一起打起来,于是rly一天又借来了许多许多的車在棋盘上摆了起来……他想知道,在N× ...
- 【bzoj3456】 城市规划
题目 一句话题意,无向连通图计数 技不如人,甘拜下风 设\(f_i\)表示\(i\)个节点构成的无向连通图数量 之后...之后就不会了 于是抄题解 考虑容斥 \[f_i=t_i-\sum_{j=1}^ ...
- 如何寫一個自定義控件/vs2010生成Dll文件并引用dll(C#)
1.最簡單的例子 首先你先新建->項目->類庫.然後右鍵項目.添加一個用戶控件.設置其用戶控件繼承button. egg: namespace ClassLibrary1{ publ ...
- Java 读取properties
package Db; import java.io.InputStream; import java.util.Properties; import java.io.BufferedReader; ...
- [LuoguP2403][SDOI2010]所驼门王的宝藏
题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...
- TabActivity 、fragemnt+fragment 和 Fragment+Viewpager 优缺点
1 TabActivity : 1 过时了 . 2 activity . 是作为android的四大组件... 重量级的家伙 ViewGroup : 特别麻 ...
- 解析oracle对select加锁的方法以及锁的查询 转
转自 https://www.jb51.net/article/37587.htm 本篇文章是对oracle对select加锁的方法以及锁的查询进行了详细的分析介绍,需要的朋友参考下 解析oracle ...
- linux内核netfilter连接跟踪的hash算法
linux内核netfilter连接跟踪的hash算法 linux内核中的netfilter是一款强大的基于状态的防火墙,具有连接跟踪(conntrack)的实现.conntrack是netfilte ...
- Eclipse设置working set管理项目
由于项目太多,看起来复杂,不容易找到,所以想要按文件夹区分,所以用到workingset. working set是把你这个存储空间的项目在eclipse中进行分类,只是在视图基础上分类,项目还是只有 ...
- uboot中ftd命令
可以从u-boot官网源码下载一个比较新的u-boot, 查看它的cmd/fdt.cftp://ftp.denx.de/pub/u-boot/ fdt命令使用示例nand read.jffs2 320 ...