扩展正则表达式及应用
第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] 表示a到z
[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] 除了0到7以外的替换成空格
[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] 一个整体 a或b或c
正则表达式认为只要是在中括号里面的就是一样的.
[^abc] 出a或b或c之外
扩展正则表达式及应用相关推荐
- LINUX_egrep及扩展正则表达式
05_01_egrep及扩展正则表达式 正则表达式分为两类: Basic REGEXP:基本正则表达式 Extended REGXP:扩展正则表达式 grep:使用基本正则表达式定义的模板来过滤文本的 ...
- 正则表达式与扩展正则表达式区别
最近在学习正则表达式时,遇到了一些问题,究其原因是正则表达式与扩展正则表达式的区别没有弄清楚 正则表达式与扩展正则表达式类似,只是扩展正则表达式表达更加简单正则表达式需要打 \ 转义字符 来表示某些字 ...
- Linux扩展正则表达式
1. 扩展正则表达式 1.1 +(加号) + 表示前一个字符出现1次或1次以上 1.1.1 理解+ 要求:取出文件内容连续出现的小写字母 [root@oldboyedu50-lnb /oldboy]# ...
- glob,正则表达式元字符,扩展正则表达式总结
globbing: 文件名通配 查询详细信息: man glob元字符:*: 匹配任意长度的任意字符?: 匹配任意单个字符[]: 匹配指定范围内的任意单个字符[^]: 匹配指定范围外的任意单个字符有几 ...
- Shell编程扩展正则表达式(egrep、awk)
目录 扩展正则表达式 扩展正则表达式元字符 扩展元字符 egrep 示例 匹配o至少出现一次或者以上次数的内容 匹配以be为开头,t为结尾,中间可以是s或者为空的内容 匹配以sh为开头,rt为结尾,中 ...
- Shell扩展正则表达式练习1——电话号码过滤
Shell扩展正则表达式练习1--电话号码过滤 国内电话号码目前一般采用区号+7位或8位阿拉伯数字组成,为了尽可能达到练习的目的,自己添加一些规则:①3位区号:如北京010,上海021,西安029,这 ...
- 基本正则表达式与扩展正则表达式
正则表达式 一 基本正则表达式(BRE) 1.字符匹配 2.匹配次数 3.位置锚定 4.分组(好东西) 二 扩展正则表达式(ERE) 基本语法 写在前面:一直以来 对于正则表达式的使用都没有进行一个系 ...
- 正则表达式与扩展正则表达式(grep, sed, awk)
Linux中用来在文件中搜索字符串的命令,如grep, sed, awk等命令支持正则表达式与扩展正则表达式. 1. 基础正则表达式 符号 解释 示例 * 匹配0次或多次 b.*t . 匹配任意字符 ...
- egrep扩展正则表达式
egrep : 和 grep 部分功能类似 支持扩展的正则表达式实现类似于grep文本过滤功能:grep -E egrep [OPTIONS] PATTERN [FILE-] 选项:-G:支持基 ...
最新文章
- 蓝桥杯 扑克序列(全排列)
- php框架里有模版引擎吗,Yii框架用模版引擎了吗?_PHP开发框架教程
- 使用自定义UISlider控制View亮度
- OpenCASCADE:Modeling Data之二维几何
- 使用 Debian 从 0 开始搭建 hexo 博客
- JavaScript 第一课 JavaScript简史
- ssh user@host command 与login host运行shell的区别
- Objective-C学习准备__C语言6
- 鼠标在滑块上滚轮控制_直线导轨(滚轮导轨)与线轨(滚珠导轨)的优劣势对比...
- C# ToString
- leetcode 两数之和 java版本
- 目标客户画像_数据运营实战(一):细分目标人群,结合用户画像的实践
- 加拿大计算机工程研究生,加拿大电子与计算机工程研究生
- 企业单方调岗降薪,务工者不服离职索赔
- java内存泄漏定位和解决,学习路线+知识点梳理
- Java输出最大值,最小值3种方法
- 【Python自动化办公】批量将Excel表格数据导出为PDF文件
- Mad Scientist[USACO]
- YYLabel 点击富文本中的文字
- 凌祯excel课程_【课程介绍】Excel高效实战:提高桌面生产力.pdf
热门文章
- boostraptable 表格数据未刷新
- PoE交换机供电距离只能跑100米,就不能再远一点吗?
- 【ZeloEngine】沙箱机制
- matlab tikz,TeX系列: matlab2tikz--matlab图形数据转化为tikz命令
- Node.js中的child_process模块详解
- 第四章 android 命名规范和编码规范
- OWASP TOP 10-2021年十大Web应用安全风险榜单
- 火狐浏览器怎么看html码,利用火狐浏览器查看网站加载速度
- STM32学习笔记(十七)TLTLCD显示实验
- docker-jenkins将打包的镜像推送到镜像仓库