扩展正则表达式及应用

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 第1章 扩展正则表达式 1.1  + 前一个字符连续出现了1次或1次以上 egrep  "0+" oldboy.txt  1次或1次以上 >=1 egrep  "0*" oldboy.txt  0次或0次以上 >=0 1.

第1章 扩展正则表达式

1.1  + 前一个字符连续出现了1次或1次以上

egrep  "0+" oldboy.txt  1次或1次以上 >=1

egrep  "0*" oldboy.txt  0次或0次以上 >=0

1.1.1 找到文本中的0

[root@znix ~]# egrep  "0+" oldboy.txt

my qq num is 49000448.

not 4900000448.

[root@znix ~]# egrep -o  "0+" oldboy.txt

000

00000

 

1.1.2 取出文件中的大写字母

[root@znix ~]# grep -o "[A-Z]" oldboy.txt

I

I

I

O

L

D

B

O

Y

1.1.3 取出连续出现的大写字母

[root@znix ~]# egrep -o "[A-Z]+" oldboy.txt

I

I

I

OLDBOY

1.1.4 显示所有的单词

[root@znix ~]# egrep -o "[A-Za-z]+" oldboy.txt

I

am

oldboy

teacher

1.2  | 或者

表示找其中的一个或者是另外一个。

[root@znix ~]# egrep "oldboy|oldbey" oldboy.txt  -o

oldboy

oldboy

oldbey

/etc/services 中的两个端口

[root@znix ~]# egrep "3306|1521" /etc/services

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

       找其中的A或者B或者C

[root@znix ~]# egrep "A|B|C" oldboy.txt

my god ,i am not oldbey,but OLDBOY!

       找到12或者56替换成空。

[root@znix ~]# echo 123456|sed -r 's#12|56##g'

34

1.3 () 小括号 反向引用

小括号里面的内容是一个整体,相当于是一个字符 

1.3.1 表示一个整体

[root@znix ~]# egrep "oldb(o|e)y" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY!

1.3.2 反向引用

       sed -r 使用扩展正则

[root@znix ~]# echo 123456|sed -r 's#..(..)..#\1#g'

34

       点表示任意一个字符,\2表示第二个括号。

[root@znix ~]# echo 123456|sed -r 's#(.).(..).(.)#\2#g'

34

1.4 {} 大括号(花括号)

0{n,m} 数字0连续出现了至少n,最多m

[root@znix ~]# egrep "[a-z]{3,6}" oldboy.txt

I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

 

[root@znix ~]# egrep "[a-zA-Z]{3,6}" oldboy.txt

I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@znix ~]#

1.4.1 大括号的不同方法

 0{3,6}   >=3 <=6

 0{3}     ==3

 0{3,}    >=3

 0{,6}    >=0 <=6

1.5  

前一个字符连续出现了 0次或1

1.5.1 环境

[root@znix ~]# cat a.log

good

gd

god

goood

1.5.2 o连续出现0次或1

[root@znix ~]# egrep "gd|god" a.log

gd
god

[root@znix ~]# egrep "go?d" a.log

gd
god

1.6 正则表达式分类

1.6.1 基础正则

^       以……开头

$       以……结尾

^$     空行

.*      所有

[abc]   表示abc

[a-z]   表示az

[A-Z]   表示A-Z

[^abc]  表示排除abc

1.6.2 扩展正则表达式

+      连续出现 1次或1次以上

|       或者

()      小括号里面的内容是一个整体,相当于是一个字符

{}      0{n,m} 数字0连续出现了至少n,最多m

?       前一个字符连续出现了 0次或1

 

第2章 取出eth0网卡的ip地址

2.1 思路

1)先定位 取出第二行

2)取出ip地址

2.1.1 eth0的内容

[root@znix ~]# ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0C:29:A8:E4:14 

          inet addr:10.0.0.201  Bcast:10.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fea8:e414/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:86884 errors:0 dropped:0 overruns:0 frame:0

          TX packets:74978 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:14324203 (13.6 MiB)  TX bytes:26220378 (25.0 MiB)

2.2 方法一 sed 去头去尾

sed命令,将其中不需要显示的,逐步替换。

[root@znix ~]#  ifconfig eth0|sed -n '2p'|sed 's#^.*dr:##g'|sed 's# .*$##g'

10.0.0.201

2.3 方法二sed 反向引用 

反向替换,使用()把ip地址保护起来,\1方向选择,显示出来ip

[root@znix ~]# ifconfig eth0|sed -nr '2s#^.*dr:(.*)  Bc.*$#\1#gp'

10.0.0.201

       简写

[root@znix ~]# ifconfig eth0|sed -n '2p'|sed -r 's#^.*dr:(.*)Bc.*$#\1#g'

10.0.0.201 

2.4 方法三

使用把[^0-9.]之外的替换成空格,使用awk取出第一列。

[root@znix ~]# ifconfig eth0|sed -n '2s#[^0-9.]# #gp'|awk '{print $1}'

10.0.0.201

2.5 方法四

awk 指定分隔符,将空格和分号都定为分隔符,然后取列。

[root@znix ~]# ifconfig eth0|sed -n '2p'|awk -F "[ :]+" '{print $4}'

10.0.0.201

第3章 第三关练习题

3.1 如何取得/etiantian文件的权限对应的数字内容,如-rw-r--r--644,要求使用命令取得644 这样的数字。

 

3.1.1 方法一 反向引用

使用反向引用,保护要取出的内容。

[root@znix ~]# stat /etc/services |sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'

644

3.1.2 方法二 掐头去尾

两个sed 将不需要的东西替换为空。

[root@znix ~]# stat /etc/hosts |sed -n '4s#^.*(0##gp'|sed 's#/.*$##g'

644

3.1.3 方法三 排除

[^0-7] 除了07以外的替换成空格

[root@znix ~]#  stat /etc/hosts |sed -n '4s#[^0-7]##gp'

064400

[root@znix ~]# stat /etc/hosts|sed -nr '4s#[^0-7]+# #gp'

 0644 0 0

 

第4章 特殊符号通配符

4.1 特殊符号

&&   并且 前面的执行对了执行后面

||   或者 前面命令执行失败了再执行后面的

>>   追加输出重定向

>   标准输出重定向

/     路径的分隔符

$    取变量的内容

.    当前目录

..   当前目录的上一级目录

~    家目录

|    管道

!    取反 find awk

#    注释

4.2 通配符

* {}    找出文件

4.3 正则表达式(三剑客grep sed awk使用)

^

$

^$

.*

[abc]   一个整体 abc

        正则表达式认为只要是在中括号里面的就是一样的.

[^abc]  abc之外

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
人工智能 机器人 Unix
正则表达式的应用
正则表达式的应用
218 0
|
Java 测试技术
Java一分钟之-正则表达式在Java中的应用
【5月更文挑战第14天】正则表达式是Java中用于文本处理的强大力量,通过`java.util.regex`包支持。常见问题包括元字符的理解、边界匹配和贪婪/懒惰量词的使用。错误通常涉及未转义特殊字符、不完整模式或过度匹配。要避免这些问题,需学习实践、使用在线工具和测试调试。示例代码展示了如何验证邮箱地址。掌握正则表达式需要不断练习和调试。
164 2
|
存储 Kotlin
正则表达式在Kotlin中的应用:提取图片链接
正则表达式在Kotlin中的应用:提取图片链接
|
Python
告别死记硬背:掌握Python正则表达式re模块的高效应用&[面向百度编程]
Python中正则表达式的高效应用,通过内置的`re`模块,讲解了如何匹配、提取和替换字符串,并提供了相关示例代码,同时提倡通过实践来掌握正则表达式的使用,而不是仅仅依赖网络搜索。
181 1
|
监控 Java 数据处理
正则表达式数字匹配技巧与应用场景分析
正则表达式数字匹配技巧与应用场景分析
369 10
|
SQL 数据处理 数据库
SQL正则表达式应用:文本数据处理的强大工具——深入探讨数据验证、模式搜索、字符替换等核心功能及性能优化和兼容性问题
【8月更文挑战第31天】SQL正则表达式是数据库管理和应用开发中处理文本数据的强大工具,支持数据验证、模式搜索和字符替换等功能。本文通过问答形式介绍了其基本概念、使用方法及注意事项,帮助读者掌握这一重要技能,提升文本数据处理效率。尽管功能强大,但在不同数据库系统中可能存在兼容性问题,需谨慎使用以优化性能。
312 0
|
数据采集 监控 Java
正则表达式教程:从入门到实战应用
正则表达式教程:从入门到实战应用
|
数据采集 监控 Java
正则表达式数字匹配技巧与应用场景分析
正则表达式数字匹配技巧与应用场景分析
|
数据采集 监控 Java
正则表达式教程:从入门到实战应用
正则表达式教程:从入门到实战应用