一、正则表达式之grep与egrep
正则表达式:就是用一类字符所书写的模式(pattern)来描述选择的条件;
grep:默认支持基本正则表达式
egrep:扩展正则表达式
二、grep,egrep基本语法
2.1 grep说明:
grep [参数] "模式(pattern)" 文件(FILE)
--color=auto :给被匹配到的字符串加上颜色;
-v :反向选取,只显示不符合模式的行;
-o:只显示被匹配到的字符串,而不是整行;
-i:不区分大小写字母;
-E:使用扩展正则表达式;
(grep -E = egrep)
-A #:显示匹配到的后面的#行(eg: -A 2 );
-B #:显示匹配到的前面#行;
-C #:显示匹配到的前后#行;
2.1.1) 基本正则表达式元字符:
^:锚定行首符合条件的内容;
eg: grep "^ROOT" /etc/passwd
$:锚定行尾符合条件的内容;
eg: grep "ROOT$" /etc/passwd
注意:锚定行首行尾 ^ROOT$
锚定空白行 ^$
.:匹配任意单个字符;
*:匹配紧挨在前面的字符任意次(匹配0次,1次,2次...);
.*:匹配任意长度的任意字符;
eg: grep "ab.*ab" File
[]:匹配指定范围内的任意单个字符;
eg: grep "[abc]" FILE
[^]:匹配范围外的任意单个字符;
[a-z]:匹配a到z小写字母任意单个字母;
[A-Z]:匹配A到Z大写字母任意单个字母;
[0-9]:匹配0到9数字任意单个数字;
[:digit:]:所有数字,相当于0-9
[:lower:]:所有小写字母,相当于a-z
[:upper:]:所有大写字母,相当于A-Z;
[:alpha:]:所有的字母
[:alnum:]:所有字母,数字
[:space:]:空白字符
[:punct:]:所有标点符号
eg: grep "^[0-9][a-z]$" FILE
\?:匹配紧挨在前面的字符0次或1次;
\{m,n\}:匹配其前面的字符至少m次,至多n次;
\{0,n\}:匹配至多n次,0-n次;
\{m,\}:匹配至少m次;
\{m\}:精确匹配m次;
eg:grep "a\{1,5\}" FILE
\<:锚定词首
eg: grep "\<b" FILE
\>:锚定词尾
eg: grep "b\>" FILE
\(\):分组
eg: grep \(ab\){1,3\} FILE
2.2 egrep说明:
grep -E=egrep
2.2.1) 扩展正则表达式egrep元字符扩展,其余同上:
+:匹配前面的字符至少1次;
eg egrep "a+" FILE
?:匹配紧挨在前面的字符0次或1次;
eg grep-E "a?b" FILE
{m,n} :至少m次,至多n次;
eg:egrep "a{1,5}" FILE
():分组,支持引用\1,\2
eg: egrep "(ab){1,3}.*\1" FILE
a|b: 二选一,或者; eg:egrep "^s|S" FILE