RHCE 学习笔记(17) 通配符和正则表达式

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://beanxyz.blog.51cto.com/5570417/1601050

这一节学习了通配符和正则表达式在grep里面使用。

首先看看Shell下的通配符。 

最最常见的符号如下所示:

数字 [0-9]

字母 [a-z]

非字母[^a-z]

非数字[^0-9]

任意符号 *

转义符号 \

大写 [[:upper:]] 

小写 [[:lower:]]

数字 [[:digit:]]

字母 [[:alpha:]]

数字+字母[[:alnum:]]

空格 [[:blank:]]

看看例子

例1

第一个列出了数字和字母开头的文件

第二个列出了数字和-开头的文件

第三个列出来了数字开头的文件

例2

如果直接查找vsftp* 没问题;但是如果在当前目录下创建了匹配这个格式的文件,那得到的结果就是当前目录的文件而不是软件包了,因为yum是shell 的子进程,这个* 通配符在shell就被解析了;可以加引号或者转移符号来避免误会

下面来看看正则表达式在grep里面的使用

grep之前已经学习过了,简单的表达形式是 【grep 选项 字符串 文件】

选项可以是-n 行号,-v 反向选择,-a 文本文件,-i 忽略大小写

通配符在grep一样可以使用,不过有的符号意思发生了改变。

例3

先看个基本的例子,反向搜索没有#的行,如果不加引号,他会被shell直接解析,而不是在grep中进行解析

^符号如果是在方括号里面,表示否定; 如果是单引号里面表示这个字符串是以^后面的字符开头的

对比如下所示

如果表示结尾的字符,可以用'$', 如果直接输入‘^$', 则表示空行

例4

空行

如何表示一个或者多个字符?我们可以用. (小圆点)来表示任意一个符号,表示这个位置就有个符号,随便是啥都行;* (星号) 可以表示有0个或者多个重复的符号,比如to* 可以表示的格式是tXXXXXXXX,toXXXXX,tooXXXXXXX ...都是可以的

例5 比如 to* 和 t.m的区别

除了 小圆点和星号,我们还可以使用?表示0或1次; +表示1次以上, {m,n}表示表达式出现至少m次,最多n次;这需要使用扩展正则表达式-P或者-E,否则直接运行无效

例 6  直接运行没有结果,-P用perl的方式来解析,就可以了 {3}表示 o 出现3次,{2,4}表示出现了2次到4次

to.?m 里面 . 表示任意一个字符,?表示这个任意字符出现了0次或者1次,因此满足 tom, toXm 的字符串都是可以的

类似的 to.+m里面 .表示任意字符,+表示这个字符出现了1次或者多次,那么匹配的字符串是toXm,toXXm,toXXXm,换句话说满足to开头,m结尾的字符串都是可以的

最后做个练习,如何只输出ifconfig里面ip的结果,不准用awk

这个能够匹配的写法太多了,豆子自己写了个比较复杂的

下面是老师的写法

本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1601050

时间: 2024-09-19 09:35:40

RHCE 学习笔记(17) 通配符和正则表达式的相关文章

API Demos 2.3 学习笔记 (17)-- Views->Tabs

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> Tab与TabHost应用很广泛.打开android手机的默认电话拨号程序,上面就是由"拨号","通话记录","通讯录"以及"收藏"四个选项卡组成的. TabHost有两种实现方式,一种是继承TabActivity,另一种是自己定义TabHost,不继承TabActivity.APIDemo中的三个实例都是第一种.想了解TabHost的第二种实现方

RHCE 学习笔记(38 ) - Shell

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1611830 Shell脚本的参考书从基础到高级可以找几百本出来,豆子这里过为了整个学习笔记的完整性,还是厚颜把最最基本的语法回顾一遍.最基本包括变量,比较,运算符,条件语句,循环语句. 变量分为本地变量,环境变量,位置变量 首先看看本地变量, 变量名=值的方式赋值,不过只在当前的shell里面有效 比如,子shel

RHCE 学习笔记(10) 远程访问

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1598056 这一节学习了如何在Linux和windows下对RHEL进行远程访问.主要包括了SSH的密码,密钥访问,XShell以及VNC的使用 首先来看看Linux下如何远程访问另外一台服务器. 现在我有两条服务器 rhce7-00 和 rhce7-01,IP地址如下所示 rhce7-01 rhce7-00 从0

RHCE 学习笔记(18) 计划任务 at和 crontab

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1601420 正则表达式以后本来应该学习VIM,不过VIM的 相关知识以及在RH124学习过了,因此直接进入计划任务的学习. 计划任务主要有两个命令,at和crontab. at是一次性的,crontab是周期性的. 先来 看看at,at语法很简单 at + 时间 ,然后输入执行的内容,Ctrl+D保存退出即可 写个

RHCE 学习笔记(9) 网络管理

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1597852 n这一节本来按照教学大纲应该是学习SSH,不过SSH有很多网络相关的知识,因此老师把网络内容提前了一些.网络的基本知识例如IP,DNS,DHCP,路由协议等常识就不在此解释了. RHEL查看网卡的相关信息很容易,ifconfig就可以查看.注意 RHEL7里面的网卡名目方式从eth0,1,2的方式变成了

Symbian学习笔记(17)——初探WebServices API的使用(上)

很久没有学习Symbian了,今天研究一下如何使用Symbian中提供的WebService框架来SayHello. 从SDK文档中提供的资料来看这个接口似乎有点复杂,包括了Connection API.Description API和Manager API三套东西,此外还涉到了XML的解析之类的一些API的应用. 阅读了一下它的例子程序(S60Ex目录下的AddressBook),让我更晕乎了.怎么跟自己平时使用的WebService不一样了? 在SDK文档中关于CSenServiceConn

RHCE 学习笔记(23) - 磁盘格式化和分区

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1603113 这一节学习RHEL7里面如何对磁盘进行分区和格式化,下一节会进一步学习如何配置LVM. 图形工具很简单,Disk工具打开就可以配置了,主要来看看命令行下如何配置MBR和GPT分区格式的硬盘. 传统的硬盘分区都是MBR格式,MBR分区位于0扇区,他一共512字节,前446字节是grub引导程序,这个会在后

RHCE 学习笔记(12) 归档压缩和文件传递

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1598287 这一节学习了压缩,归档以及如何利用scp和rsync的传送文件. 归档(archive)和压缩(compress)是两个不同的概念,尽管我们经常放在一起使用.归档类似打包的概念,把一堆内容放入一个文件:而压缩则是把归档好的文件进行压缩以便节约空间. 先看看归档,tar命令,最常用的是 tar -cvf,

RHCE 学习笔记(14)- 文件系统(2) - 搜索文件

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://beanxyz.blog.51cto.com/5570417/1599513 这一部分主要学习了如何搜索文件. 常用的文件搜索命令有locate,which,whereis和find, 下面依次看看 locate是通过一个数据库来利用名字搜索.他的速度很快,不过数据库更新比较慢,一周才更新一次,因此最新的信息可能找不到,需要手动更新updatedb之后才能查到 例如 which