正则表达式:
在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
正则表达式:基本正则表达式:Basic
扩展正则表达式:Extended
基本正则表达式:Basic
grep:使用正则表达式定义的模式来过滤文本的命令
grep [options] PATTERN [FILE...]
-i:不区分字母大小写
--cololr:把符合条件的用颜色显示出来
-o:只显示被模式匹配到的字符串
-v:显示没有被模式匹配到的字符串
-n:输出行号
-E: 使用扩展正则表达式
-A #:这一行后的#行 都显示出来
-B #:这一行前的#行,都显示出来
-C #:前后#行都显示出来
\{n,m\}:连续n到m个的“前一个字符”
例:
1.[root@localhost ~]# grep 'root' /var/log/secure
将/var/log/secure这个文件中有root的那一行显示出来
2.搜索特定字符
[root@localhost ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
3.反向选择
[root@localhost ~]# grep -v 'root' /etc/passwd
4.锚定行首
[root@localhost ~]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
5. 限定连续重复字段范围
假设找到两个o的字符串
[root@localhost ~]# grep ''o\(2\)”/etc/passwd
6. 显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字 符的行;
grep '^#[[:space:]]\{1,\}[^[:space:]]' /etc/inittab
7. 取出默认shell为/sbin/nologin用户列表
grep 'nologin$' /etc/passwd |cut -d :f1
扩展正则表达式:Extended
grep -E =egrp
特殊字符:
+:匹配其前面的字符至少一次
?:“0个或1个”字符
|:用或(or)的方式找出整个字符串
C|cat:C或cat
(C|c)at:Cat或cat
():找出“用户组”字符串
字符匹配:
.: 匹配任意一个字符
[ ]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
次数匹配:
*:匹配其前面的字符任意次 b、ab、aab、 a*b
.*:任意长度的任意字符
\?:匹配前面的字符0次或1次
字符集合:
[[:space:]]:表示空白字符
[:punct:]:表示标点符号
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:数字
[:alnum:]:数字和大小写字母
位置锚定字符:
^:锚定行首.此字符后面的任意内容必须出现在在行首
$:锚定行尾,此字符前面的任意内容必须出现在在行尾
^$:空白行
\<或\b:锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b:锚定词尾,其前面的任意字符必须作为单词尾部出现
\<root\>:必须是单词 分组:
():分组
\1,\2...
\.:表示点本身
如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个ov。
x{m},x{m,},x{m,n}作用同x\{m\},x\{m,\},x\{m,n\}
转载于:https://blog.51cto.com/weihong/1148188