linux正则表达式使用

  首先介绍下正则表达式,它是由一串字符和元字符构成的字符串,简称RE(Regular Expression),它的主要功能是文本查询和字符串操作,它可以匹配一个文本的字符和字符集,达到数据过滤的效果。

  字符分为普通字符和元字符两种。普通字符,例如a、b、1、2等,元字符,例如*、^、[]等,以下是各个元字符代表的含义:

元字符 含义
* 0个或多个在*之前的普通字符(hel*o)
. 任意匹配字符(hell.)
^ 匹配行首,或后面字符的非(^Hello,以Hello开头)
$ 匹配行尾(bye$,以bye结尾;^$,空行;^.$,只匹配一个字符的行)
[] 匹配字符集([0-9]、[a-z]、[A-Z]、[^a-c]匹配非a-c范围的字符)
\ 匹配一个元字符的特殊含义(\.)
\<\> 精确匹配符号(\<the\>,精确匹配字符串the)
\{n\} 匹配全面字符出现n次(Jo\{3\}b,匹配字符串“Jooob”)
\{n,\} 匹配全面字符至少出现n次((Jo\{3,\}b,匹配字符串中的o至少出现3次))
\{n,m\} 匹配全面字符出现n~m次(Jo\{3,6\},匹配字符串中的o出现次数在3-6之间)
匹配0个或1个它前面的字符(Jo?b,匹配的字符o出现0次或1次)
+ 匹配1个或多个它前面的字符(Jo+b,匹配的字符o至少出现一次)
() 通常结合|使用,re(a|o|e)d,匹配a、o、e中的任意一个字符
| 用于连接多个正则表达式,也可作为管道符用
{} 可以将多个正则表达式写入{}之间,可以匹配其中的任意表达式

例:

精确匹配:

[root@localhost Desktop]# grep -n '\<world\>' scripts/a.txt
2:echo "Hello world"
14:-----hello world     `
15:Hello world

[root@localhost Desktop]# grep -w world scripts/a.txt
echo "Hello world"
-----hello world        `
Hello world

或:

匹配规则“|”,需要与-E结合使用

[root@localhost Desktop]# grep -nE "java|jd" scripts/a.txt
8:/java/
13:www.jd.cn

POSIX字符

 

类名 含义
[:upper:] 表示大写字母A-Z
[:lower:] 表示小写字母a-z
[:digit:] 表示阿拉伯数字0-9
[:alnum:] 表示大小写字母或阿拉伯数字
[:space:] 表示空格或Tab
[:alpha:] 表示大小写字母

例:[root@localhost Desktop]# grep -n [[:upper:]] scripts/a.txt
  2:echo "Hello world"
  15:Hello world
  16:I am Spal

 

posted @ 2016-11-07 17:36  confident1012  阅读(228)  评论(0编辑  收藏  举报