正则表达式在工作中经常用到。正在表达式是对字符串进行处理的工具。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.*$来匹配尾内容。中间要匹配的内容用