以下基于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取出了某行中需要的内容