grep 命令 及正则表达式总结
grep:
英文:Glob Regular Expresstion Printing (全局搜索正则表达式打印)
通常需要结合正则表达式(RE)来完成匹配。
RE:分为两种:
Basic RE; Extened RE
语法: grep [option] ...'PATTERN' FILE ...
选项:
--color=auto;给符合条件的关键字附上颜色。
-v:反向选择,只显示不符合条件的行。
-o:only-match,只显示被匹配的字符串,不显示行。
-i:ignore-case,不区分大小写。
-A:after,不仅显示匹配到的行,而且还要显示后面#行;例如:-A2 表示后两行。
-B:before,不仅显示匹配到的行,而且还要显示前面#行;例如:-B2表示前两行。
-C:context,不仅显示匹配到的行,而且还要显示前面#行,后面#行,例如:-C2表示把前后2行都显示
-E:extend,grep -E = egrep 扩展正则表达式。
例子:
1.grep 查看ip地址
#ifconfig eth0|grep "inet addr"|cut -d: -f2|cut -d' ' -f1
基本正则表达式元字符:
字符匹配:
^:行首锚定,用法"^pattern".
$:行尾锚定,用法"pattern$".
"^$":表示空白行.
.:匹配单个任意字符;例如a.c: 可以是abc acc;不可以:abbc
[]:匹配指定范围内的任意单个字符;例如[a-z]: 可以是a,b,c;不可以:ab,123
[^]:匹配不再范围内的任意单个字符;例如[^a-z];可以是A,N,不可以:a,b;
次数匹配:(工作在贪婪模式)
*:表示匹配前一个字符出现o次或1次或者多次;例如ab*c; 可以是:abc,ac,abbbbc 不可以:abdc,
ab*:可以表示a,abbbbbb,a *b:a b,ab,a b,a pa b;
?:表示匹配前一个字符出现0次或1次;
例如:ab?c: abc,不可以是: abbc,adc
\{m,n\}:匹配前一个字符至少出现m次 最多出现n次;
\{0,n\}:表示前一个字符最多出现n次;
\{m\}: 表示精确m次;
例子:
ab\{3\}: abbbc 指定b出现3次;
ab\{0,2\}:a,abb b最少出现0次最多2次;
ab\{3,\}:abbb,abbbbb,abbbbbb 指定b最少出现3次;
ab\{3\}:abbb 指定b出现3次。
单词锚定:
\<:锚定词首,用法\<pattern,例如:\<br表示以br开头的单词。
\>:锚定词尾,用法pattern\>例如:ing\>表示以ing结尾的单词。
\<pattern>:精确锚定单词,用法\<pattern\>例如:\<love\>表示锚定love单词。
分组锚定:
\(\):分组锚定,用法:\(pattern\)
例如:
\(ab\)\{1,2\}:表示以ab为一组匹配至少1次,最多2次;
\(ab\).*\1:表示ab后面跟任意字符然后再跟ab,等同于ab.*ab 后面的\1表示引用前面的第一个分组ab,如果是\2表示引用前面第二个分组等等以此类推。