linux学习之正则表达式

来源:互联网 发布:会声会影 mac版 编辑:程序博客网 时间:2024/06/05 19:31

正则表达式在工作中经常用到。正在表达式是对字符串进行处理的工具。java,javascript,linux,ptyhon,都能看见其身影。

在这里做一个小小的总结。


一.正则表达式的认识

^:   ^word  匹配所有以word开头的字符串 开始的意思。

$:   word$ 匹配所有以word结尾的字符串 结束的意思。

^$  两个连着用 匹配以结束为开头的所有串。只有空行能够匹配。


. :   点代表匹配任意一个且只有一个字符。

* :  星号代表匹配前面0个或多个字符,空字符也能匹配。

\ :  反斜线是转义正则表达式里特殊字符的意思

.*:  经常看见两个组合起来使用。是表示任意一个字符可以出现0次或多次。意思就是匹配任意的字符串(包括空字符串)


{n,m}: word{1,4} 表示work出现次数 >= 1 且 <= 4, 至少出现一次。之多出现4次 这样的串。 


二.正则表达式的使用

使用正则表达式对工作非常有帮助。以获取ip地址为例

1.获取IP地址:ifconfig eth0

2.获取IP地址所在行: ifconfig eth0 | grep 'inet addr:'
3.去除IP地址前面内容:ifconfig eth0 | grep 'inet addr:'|sed 's#^.*r:##g'
4.去除IP地址后面内容:ifconfig eth0 | grep 'inet addr:'|sed 's#^.*r:##g'|sed 's#Bc.*$##g'
5.去除IP地址中的空格:ifconfig eth0 | grep 'inet addr:'|sed 's#^.*r:##g'|sed 's#  Bc.*$##g'

也可以采用ifconfig eth0 | sed -n 's#^.*addr:\(.*\)  Bc.*$#\1#gp' 直接完成。

总结
使用sed -n 参数去掉sed默认输出格式。’sgp‘p的意思是使用指定的输出格式。sed -n "s###gp"
采用 ^.*XXXX这个种固定格式来匹配头内容。
使用XXXX.*$来匹配尾内容。中间要匹配的内容用















0 0