一、正则表达式简述

・概念:用一串字符,描述有共同属性的数据

・注意:使用正则表达式匹配时,一定要注意 转移符号的使用

・格式:

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下的正则表达式及实例相关推荐

  1. linux获取中括号内容,shell里使用正则表达式提取括号中的内容

    遇到个websphere MQ监控的问题,希望通过命令行的方式获取到MQ的一些状态: 1. su - mqm 使用mqm用户 2. dspmq 最简单的命令,查看队列控制器的状态: $ dspmq - ...

  2. Linux学习8之Shell编程--基础正则表达式

    1. 正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配的.grep.awk.sed等命令可以支持正则表达式. 通配符是用来匹配符合条件的文件名,通配符是完全匹配的.ls. ...

  3. linux fork脚本,在Shell脚本中调用另一个脚本的三种方式讲解

    先来说一下主要以下有几种方式: fork: 如果脚本有执行权限的话,path/to/foo.sh.如果没有,sh path/to/foo.sh. exec: exec path/to/foo.sh s ...

  4. Linux挖坑脚本,Windows环境下写Linux sh脚本的一次挖坑和填坑

    最近在研究Docker集群和安装的时候,需要准备若干台机器.所以我为节约时间,打算批量复制VM机器,然后用sh脚本命令执行机器名称和IP等基础配置信息的修改. 具体操作:我在windows环境下,用N ...

  5. 卸载linux下的mysql数据库实例_Linux下卸载MySQL数据库实例教程

    本文主要介绍了Linux下卸载MySQL数据库的方法,不知道Linux下卸载MySQL数据库的小伙伴们可以学习一下,本文具有一定的参考价值,希望能帮助到大家. 如何在Linux下卸载MySQL数据库呢 ...

  6. Linux(CentOS 6.5)shell下安装Cisco ***

    Cisco在Windows下有相关×××拨号软件.但是在Linux下没有相关软件.还好有高手写出相关软件. 一.信息: 虚拟机:VMware Workstation Pro 12 系统版本:CentO ...

  7. linux中脚本read,shell脚本read命令配置

    Variant用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理 1.使用fso 由于fso不是wsh的一部分,所以我们需要建立他的模型 例如setfs=wscript.createo ...

  8. 简单python脚本实例-python下10个简单实例代码

    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且 ...

  9. python简单程序实例-python下10个简单实例代码

    注意:我用的python2.7,大家如果用Python3.0以上的版本,请记得在print()函数哦!如果因为版本问题评论的,不做回复哦!!! 1.题目:有1.2.3.4个数字,能组成多少个互不相同且 ...

最新文章

  1. 基于深度学习的可疑活动视频分析
  2. 深度学习之单目深度估计:无监督学习篇
  3. 研究生,导师不是你的保姆……
  4. ibm笔记本电脑电池_福建省厦门市集美区电池定制供应多少钱
  5. BugBash活动分享
  6. 合成孔径成像算法与实现_声呐二维成像技术
  7. send()/recv()和write()/read():发送数据和接收数据
  8. unity中实现简单对象池,附教程原理
  9. LeetCode C语言刷题——day1
  10. 反斜杠在C/C++中的作用
  11. linux互传文件nc命令
  12. AcWing提高算法课Level-3 第四章 高级数据结构
  13. SQL2008卸载。
  14. 捷联式惯导系统初始对准
  15. 清华计算机科学技术复试2018,2018清华大学计算机科学与技术系考研复试名单
  16. 【机器学习】有监督学习,无监督学习,半监督学习和强化学习
  17. 抓包软件wireshark分析
  18. 奖券数目 有些人很迷信数字,比如带“4”的数字,认为和“死”谐音,就觉得不吉利。 虽然这些说法纯属无稽之谈,但有时还要迎合大众的需求。某抽奖活动的奖券号码是5位数(10000-99999),要求其
  19. Matlab:调试成功运行失败的解决方法(附加求助!)
  20. 龙珠游戏-博弈之斐波那契数列

热门文章

  1. 【毕业答辩】毕业答辩PPT模板,风格的选择重要吗?
  2. 【毕业答辩】如何做出90分的毕业答辩PPT?
  3. java开闭原则实现代码_向对象的六大原则
  4. TensorFlow 2 Object Detection API 教程: model 命名规则
  5. 视觉平台搭建——光源选择
  6. oop matlab,oop – 在Matlab中设置对象的属性
  7. Linux裸设备管理详解--
  8. 设置自动清理mysql binlog日志和手动删除的方法
  9. 爱立信两大股东不满股价表现 欲撤换CEO卫翰思
  10. information_schema.engines学习