首页 > 系统服务 > 详细

linux正则表达式

时间:2017-09-03 23:26:15      阅读:280      评论:0      收藏:0      [点我收藏+]

以下基于grep的正则;对于awksed大部分差不多,小部分不一样:

正则表达式用于快速过滤,替换以行为单位的某些特定的字符串 正则表达式区分大小写,在grep时可加-i不区分大小写。.表示代表且只能任意一个字符,如文件名里头字母为.也可以表示一个隐藏文件,还可以表示过滤所有的行如grep -n . nginxConf -n表示过滤每一行前加行号。正则表达式里的*不代表匹配所有,其实表示重复0个或多个前面的一个字符,例如过滤2300056,可以用grep 230*56 可以匹配2356 23056 230056 2300056 23000..56

.*匹配所有字符 ^.*以任意字符开头的。[]表示匹配里面任意一个字符。[^]表示非[]里的任意字符内容,而不是匹配行。

以下如果用egrep可以去掉\线

A\{n,m\} 重复nm次,前一个重复的字符。

\{n,\}重复至少n次,前一个重复的字符。

\{n\}重复n次,前一个重复的字符。

扩展的正则表达式:ERE

+重复一个或一个以上前面的字符 用egrepgrep -E

?零个或1个前面的字符

|用或的方式查找多个符合的字符串

()找出用户组字符串

 

 

企业面试题:取出网卡ip地址

Ifconfig eth0 |sed -n  /inet addr/ |cut -d : -f2 |cut -d   -f1或者使用

Ifconfig eth0 |grep inet addr |awk -F [: ]+ {print $4}    +表示匹配多个任意字符 此处代表匹配inet前的多个空格为一个空格。在awk里有行号时取行简单直接awk  {NR==2}

^.*addr:以任何字符开头addr:结尾   Bc.*$Bc开头以任何字符结尾

 

以下sed高级用法

Ifconfig eth0|sed -n s#^.*addr:\(.*\)  Bca.*$#\1#gp意为\1取出前面一个括号(.*\)内容,而(.*\)就是addr后面的ip地址,也就通过sed取出了某行中需要的内容

 


linux正则表达式

原文:http://liukexing.blog.51cto.com/1180302/1962326

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!