以下基于grep的正则;对于awk和sed大部分差不多,小部分不一样:
正则表达式用于快速过滤,替换以行为单位的某些特定的字符串 正则表达式区分大小写,在grep时可加-i不区分大小写。.表示代表且只能任意一个字符,如文件名里头字母为.也可以表示一个隐藏文件,还可以表示过滤所有的行如grep -n . nginx。Conf -n表示过滤每一行前加行号。正则表达式里的*不代表匹配所有,其实表示重复0个或多个前面的一个字符,例如过滤2300056,可以用grep “230*56” 可以匹配2356 23056 230056 2300056 23000..56
.*匹配所有字符 ^.*以任意字符开头的。[]表示匹配里面任意一个字符。[^]表示非[]里的任意字符内容,而不是匹配行。
以下如果用egrep可以去掉\线
A\{n,m\} 重复n到m次,前一个重复的字符。
\{n,\}重复至少n次,前一个重复的字符。
\{n\}重复n次,前一个重复的字符。
扩展的正则表达式:ERE
+重复一个或一个以上前面的字符 用egrep或grep -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#g’p意为\1取出前面一个括号(.*\)内容,而(.*\)就是addr后面的ip地址,也就通过sed取出了某行中需要的内容