linux正则表达式脚本实例,Shell下的正则表达式及实例
一、正则表达式简述
・概念:用一串字符,描述有共同属性的数据
・注意:使用正则表达式匹配时,一定要注意 转移符号的使用
・格式:
a、 grep [选项] ‘正则表达式’ 文件列表1 文件列表2
b、 | 管道命令
・处理方式
a、以行为处理单位
b、默认输出与正则表达式匹配的行刀屏幕上
c、对数据进行逐行处理,处理完当前行,自动处理下一行,直到结束
・选项
→ --color 高亮显示匹配的数据
→ -q 不显示匹配的结果
→ -c 统计符合匹配的行的行数
→ -v 取反匹配
→ -n 显示符合匹配的行的行号
→ -i 匹配时忽略字母大小写
→ -E 扩展匹配,或使用egrep
→ [ ] 范围内匹配,匹配范围内的任意一个字符,可以使用连字符“-”
二、匹配实例
・匹配字母:
→ [dota] #匹配 d 或 o 或 t 或 a
→ [a-z] #匹配 a 到 z 中的任意一个字符即可,[A-Z]同理
→ [a-Z] #匹配所有字母
・匹配数字
→ [139] #匹配 1 或 3 或 9
→ [0-9] #匹配所有数字
→ [a-Z0-9] #匹配所有数字和字母
・匹配符号
→ [?!_-] #不要把符号“-”写在其他字符之间,否则会将其当做连字符,而不进行匹配
→
→ > #匹配单词结尾
# cat text #自己编一个文本,这里简单举几个例子,用 | 管道或直接用grep都可以
dota
abcd
ABCD
1234
abcd1234
a1b2c3d4
1A2B3C4D
thank you for watching
# cat text | grep dota
dota
# cat text | grep [dota]
dota
abcd
abcd1234
a1b2c3d4
thank you for watching
# grep [a-Z] text
dota
abcd
ABCD
abcd1234
a1b2c3d4
1A2B3C4D
thank you for watching
# grep "
thank you for watching
# cat text | grep "ing>"
thank you for watching
# cat text | grep [-]
?!_-
# cat text | grep -E 'dota|1234'
dota
1234
abcd1234
# grep -E 'dota|^1234$' text
dota
1234
・匹配范围
→ ^[0-9] #匹配数字开头的行
→ [^0-9] #取反匹配行,^在[]中表示‘反向选择’
# cat text | grep ^[0-9]
1234
1A2B3C4D
#这里仍然会匹配到含有数字的行,是因为匹配到的行都含有非数字的字元,所以仍会匹配到
# cat text | grep [^0-9]
dota
abcd
ABCD
abcd1234
a1b2c3d4
1A2B3C4D
thank you for watching
?!_-
#这里与[^0-9]匹配同理
# grep [^a-z] text
ABCD
1234
abcd1234
a1b2c3d4
1A2B3C4D
thank you for watching
?!_-
# cat text | grep [^A-Z]
dota
abcd
1234
abcd1234
a1b2c3d4
1A2B3C4D
thank you for watching
?!_-
# cat text | grep [^a-Z]
1234
abcd1234
a1b2c3d4
1A2B3C4D
thank you for watching
?!_-
三、元字符
・元字符(正则符号):正则表达式由一个或多个元字符组成
・元字符分类:字符匹配、次数匹配、位置锚定、分组等
→ ^ #行首匹配
→ $ #行尾匹配
→ ^$ #空行匹配
→ . #匹配任意单个字符(换行符
除外)
.$ #匹配以任意字符结尾的行
^.$ #匹配由任意一个字符结尾的行
^x.y$ #匹配含有x.y的行,这里 . 代表任意字符
.$ #匹配以字符 . 结尾的行
# cat text | grep '^do'
dota
# grep '34$' text
1234
abcd1234
# cat text | grep 'w.t'
thank you for watching
・设置正则表达式的匹配次数、格式
→ * #匹配前面正则表达式,出现零次或多次
→ ? #匹配前面正则表达式,出现零次或一次
→ + #匹配前面正则表达式,出现一次或多次
→ () #把表达式作为整体来匹配
→ {n,m} #指点前面正则表达式,匹配次数的范围
{n,} #匹配次数大于等于 n 次
{,m} #匹配次数小于等于 m 次
{x} #匹配次数等于 x 次
# cat repetition
abc
abcabc
abcabcabc
# grep "(abc){1}" repetition
abc
abcabc
abcabcabc
# grep "(abc){3}" repetition
abcabcabc
# grep "(abc){2,3}" repetition
abcabc
abcabcabc
# grep "(abc){2,}" repetition
abcabc
abcabcabc
几个实用的例子
・匹配邮箱地址
# grep "[a-Z0-9_]{1,15}@[a-Z0-9]{1,20}(.com)|(.cn)" 1.txt
abc@163.com
・匹配IP地址
# grep "([0-9]{1,3}.){3}[0-9]{1,3}" /etc/sysconfig/network-scripts/ifcfg-eth0
IPADDR=172.16.8.8
NETMASK=255.255.255.0
GATEWAY=172.16.8.1
DNS1=192.168.8.1
・匹配MAC地址
# grep "([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}" /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=00:0c:29:40:74:d7
如有出错,请帮忙指出
linux正则表达式脚本实例,Shell下的正则表达式及实例相关推荐
- linux获取中括号内容,shell里使用正则表达式提取括号中的内容
遇到个websphere MQ监控的问题,希望通过命令行的方式获取到MQ的一些状态: 1. su - mqm 使用mqm用户 2. dspmq 最简单的命令,查看队列控制器的状态: $ dspmq - ...
- Linux学习8之Shell编程--基础正则表达式
1. 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配的.grep.awk.sed等命令可以支持正则表达式. 通配符是用来匹配符合条件的文件名,通配符是完全匹配的.ls. ...
- linux fork脚本,在Shell脚本中调用另一个脚本的三种方式讲解
先来说一下主要以下有几种方式: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh s ...
- Linux挖坑脚本,Windows环境下写Linux sh脚本的一次挖坑和填坑
最近在研究Docker集群和安装的时候,需要准备若干台机器.所以我为节约时间,打算批量复制VM机器,然后用sh脚本命令执行机器名称和IP等基础配置信息的修改. 具体操作:我在windows环境下,用N ...
- 卸载linux下的mysql数据库实例_Linux下卸载MySQL数据库实例教程
本文主要介绍了Linux下卸载MySQL数据库的方法,不知道Linux下卸载MySQL数据库的小伙伴们可以学习一下,本文具有一定的参考价值,希望能帮助到大家. 如何在Linux下卸载MySQL数据库呢 ...
- Linux(CentOS 6.5)shell下安装Cisco ***
Cisco在Windows下有相关×××拨号软件.但是在Linux下没有相关软件.还好有高手写出相关软件. 一.信息: 虚拟机:VMware Workstation Pro 12 系统版本:CentO ...
- linux中脚本read,shell脚本read命令配置
Variant用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理 1.使用fso 由于fso不是wsh的一部分,所以我们需要建立他的模型 例如setfs=wscript.createo ...
- 简单python脚本实例-python下10个简单实例代码
注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且 ...
- python简单程序实例-python下10个简单实例代码
注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且 ...
最新文章
- 基于深度学习的可疑活动视频分析
- 深度学习之单目深度估计:无监督学习篇
- 研究生,导师不是你的保姆……
- ibm笔记本电脑电池_福建省厦门市集美区电池定制供应多少钱
- BugBash活动分享
- 合成孔径成像算法与实现_声呐二维成像技术
- send()/recv()和write()/read():发送数据和接收数据
- unity中实现简单对象池,附教程原理
- LeetCode C语言刷题——day1
- 反斜杠在C/C++中的作用
- linux互传文件nc命令
- AcWing提高算法课Level-3 第四章 高级数据结构
- SQL2008卸载。
- 捷联式惯导系统初始对准
- 清华计算机科学技术复试2018,2018清华大学计算机科学与技术系考研复试名单
- 【机器学习】有监督学习,无监督学习,半监督学习和强化学习
- 抓包软件wireshark分析
- 奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其
- Matlab:调试成功运行失败的解决方法(附加求助!)
- 龙珠游戏-博弈之斐波那契数列