shell脚本归纳总结(二)
来源:互联网 发布:淘宝女装分类宝贝图片 编辑:程序博客网 时间:2024/06/08 09:25
grep及正则表达式
参考:《linux shell脚本攻略 P-120》
命令
grep: 根据模式搜索文本,并将符合模式的文本行显示出来
Pattern: 模式,由文本字符和正则表达式元字符组合而成的匹配条件
说明: grep 命令只支持由基本正则表达式组成的模式匹配进行文本搜索
语法
grep [options] pattern [file…]
选项
-i 查找时忽略字符大小写
–color 将匹配的字符用颜色显示
-v 显示没有被模式匹配到的行
-o 只显示被模式匹配到的字符串
-E(=egrep) 使用扩展正则表达式
用法示例
1)将匹配的字符用颜色显示
[root@minion2 ~]# grep –color ‘root’ /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
元字符与通配符区别
1)通配符
一般只用于文件名匹配,它是由shell解析的,所谓的系统level的概念非常模糊。什么是系统level? 我们知道shell是一个命令解释器,它是内核的外壳,用于完成操作系统使用者与内核的沟通; 因此,通配符实际上就是一个shell解释器去解析的符号,它的特殊含义是由shell这个命令解释器赋予的。通配符的英文名是wildcard, 就是万用牌的意思;一般来说,Unix系统上面的shell大多将三个特殊符号当做通配符,它们是* ? […] ,其中,* 表示匹配任意长度的任意字符; ? 表示匹配一个任意字符,而[…]则表示匹配括号中列出的字符中的任意一个。
2)元字符
什么是正则表达式?可以把正则表达式看成是一种字符串匹配模式标准。这里最重要的是,它本身,只是一种业界流行的标准,或者说,相当于对字符串匹配模式的一种规定。
这种规定是随着相关的工具软件的发展而自称体系的“不成文规矩”
所以,正则表达式是一种对字符串模式的描述和规定—并且是一种标准。而不同的工具
程序,也就是egrep, sed, awk 这样的程序,以各种程度来支持这种字符串搜索模式
二者的主要区别:具体在什么地方使用
通配符: 只要是shell命令行或者shell脚本中,都可以使用通配符;
正则表达式:当使用能够支持正则表达式的工具软件进行字符串处理时,就可以使用正则表达式;还可以在支持正则表达式的语言中使用正则表达式,比如perl, java…C++ 中有专门用于支持正则表达式的库。
正则表达式语言由两种基本字符类型组成:原义(正常)文本字符和元字符。
元字符使正则表达式具有处理能力。所谓元字符就是指那些在正则表达式中具有特殊意义的字符,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
通配符:
* 任意长度的任意字符
? 任意单个字符
[ ] 指定范围内的任意字符
[ ^ ] 指定范围外的任意字符
正则表达式(Regular Expression)
元字符:
. 匹配任意单个字符
[root@minion2 ~]# grep –color ‘r..t’ /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
用来表示字符个数的元字符:
* 表示匹配其前面的字符任意次
a* b 表示a 出现任意次之后,后面跟了个b
[ ] 表示匹配指定范围内的任意单个字符
[ ^ ] 表示匹配指定范围外的任意单个字符
字符集合:
[:digit:]: 所有数字集合
[:lower:]: 所有小写字母集合
[:upper:]:所有大写字母集合
[:space:]:所有空白字符集合
用法示例:
1)找出文件中以数字结尾的行
[root@minion2 ~]# grep ‘[[:digit:]]$’ /etc/inittab
5 - X11
次数匹配
* 匹配其前面出现的字符任意次
\? 匹配其前出现的字符1次或0次
{m,n}: 匹配其前出现的字符至少m次,至多n次
.* 匹配任意长度的任意单个字符
a.*b 匹配以a开头,b结尾,中间跟任意字符
位置锚定:
^ 锚定行首,此字符后面的任意内容必须出现在行首
锚定行尾 ,此字符前面的任意内容必须出现在行尾
^ 表示空白行
\<或\b: 锚定词首,其后面的字符必须作为单词首部出现
>或\b: 锚定词尾,其前面的任意字符必须作为单词尾部出现
\
- shell脚本归纳总结(二)
- shell脚本归纳总结(一)
- linux shell脚本攻略总结(二)
- shell脚本(二)
- shell 脚本(二)
- Linux Shell脚本攻略学习总结:二
- css学习归纳总结(二)
- css学习归纳总结(二)
- javascript语法总结归纳(二)
- shell 脚本语法 (二)
- shell脚本学习(二)
- Linux shell 脚本(二)
- shell脚本编程(二)
- shell脚本练习(二)
- Shell脚本编程(二)
- Shell脚本入门(二) - Hello Shell
- 集体智慧总结和使用范围归纳(二)
- 实训阶段知识总结和归纳(二)
- 排序算法
- 【LeetCode】C# 56、Merge Intervals
- [Web Service]Web Service学习与工作原理研究|用IDEA开发Web Service
- LayoutInFlater原理
- 【项目经理之修炼(6)】《基础篇》项目经理应该坐在哪儿?
- shell脚本归纳总结(二)
- python3 读取写入Excel
- eclipse导包和maven导包、lombok包
- A联合之bundle传值在xlistview中获取
- Appium+python+Android 计算器case
- 简单的html静态网页使用libevent
- svg动态添加事件
- 【项目经理之修炼(7)】《基础篇》人生游戏中的神器——谦虚
- 【EmguCv】人脸/人眼检测