感谢支持
我们一直在努力

Linux grep 正则详解

正则表达式是一个工具,可以提高工作效率的工具。无论学习什么东西,都要明白它是用来干什么的,怎么去很好的运用它,这些才是我们应该作为学者首先该考虑的东西。既然是表达式,就是有命令、参数、选项、连接符等组合而成的,它们可以根据我们的需要,组合成有效的形式,进行文本的特定搜索和切割,得到我们想要的结果。说的简单些,正则表达式就是由一大堆的元字符组合起来,过滤文本的,我们把这些元字符组合起来,就是模式。


正则表达式,大家在开发中经常会用到的,现在很多开发语言都有正则表达式的应用,比如Javascript java .net php等。我们什么时候用正则表达式呢?不是所有的字符操作都用正则就好了,当我们遇到复杂文本数据的解析时候,用正则是比较好的选择。


优点:正则表达式在处理复杂字符操作的时候,可以提高工作效率,也在一定程度 节省了你的代码量。


缺点:我们再使用正则表达式的时候,复杂的正则表达式会加大代码的复杂度,让人很难理解,所以我们有的时候需要在正则表达式内部添加注释


正则表达式可以分为:


1.基本正则表达式:grep


2.扩展正则表达式:egrep


3.不搜索正则表达式:fgrep


基本正则表达式,在日常学习和工作中用的最多的。


表格1 grep的常用选项





























选项

说明

-v

对结果取反

-i

忽略字母大小写

-o

仅显示匹配到的字符串

-E

支持扩展正则表达式

-A n

匹配到的行向后多显示n行

-B n

匹配到的行向上多现实n行

-C n

匹配到的行上下各显n行


表格2 元字符









































.

匹配任意单个字符

*

匹配其前面的字符任意次

.*

任意长度的任意字符

[]

指定范围内的任意单个字符

[^]

取反

^

锁定行首

$

锁定行尾

^$

锁定空白行

\<

锚定词首

\>

锚定词尾

\(value\)

分组

\n

引用


表格3 常用通配符























[:digit:]

所有数字

[:lower:]

所有小写字母

[:upper:]

所有大写字母

[:space:]

所有空白字符

[:alpha:]

所有字母

[:punct:]

所有标点符号

表达式就是将以上这些选项用一种合理的方式组合起来。其中会用到我们学过的文本查找命令、文本切割命令、输入输出重定向,还有sed等等命令,只看一个命令它是独立的,零碎的,把它们结合起来就会有强大的功能。因此可以把正则表达式看成是命令的集合。


仅仅是记住这些模式是没用的,要会用才是王道。下面我们来看一些例子:


例1:取出当前系统上以eth开头的网络设备的IP地址



最后一条命令是我们想要的结果。从这个小例子中我们可以看到,正则表达式和shell一样都是命令的堆砌,只要把它们有效的组合起来,就会有意想不到的效果。


例2分析/etc/inittab文件中如下两行的文本特征,请写出可以精确找到类似两行的模式,而且要求每一行中出现在数字必须相同:


l1:1:wait:/etc/rc.d/rc 1


l3:3:wait:/etc/rc.d/rc 3



得到的结果是我们想要的吧。其中[:digit:]可以换成[0-9],这都是没关系的。这条命令中用到的是分组引用


例3显示/proc/meminfo文件中以不区分大小的s开头的行



第一条命令和第二条命令的执行结果是一样的。-i的作用就是忽略字母的大小写。


对于grep的使用就先写到这儿,基本上要用到的模式和选项都在上面的表格中,接下来就是重复再重复的去运用。


有句话不是这样说的么“什么是成功,成功就是简单的事情重复的做“,因此重复的做吧、

赞(0) 打赏
转载请注明出处:服务器评测 » Linux grep 正则详解
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏