正则表达式

第1章 正则表达式

1.1 什么是正则

特殊符号表示文字 文本

^ 开头

[0-9] 数字

1.2 作用

 提高效率 省事

1.3 分类

基础正则表达式

^ $  ^$  .  *  .*  [0-9]  [^0-9]

扩展正则表达式

|  ()  +  {}  ?

1.4 准备

  1. 预警-中文符号
  2. grep/egrep

cat >>/etc/profile<<EOF
alias grep='grep --color=auto'
alias egrep='egrep --color=auto'
EOF
source /etc/profile      给找到的内容加上红色

1.5 基础正则表达式

环境准备-创建oldboy.txt内容如下

I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com


our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!

  1.   ^oldboy 以oldboy开头的行 以....开头的行

[root@dzc oldboy]# grep "^m" oldboy.txt

my blog is http://oldboy.blog.51cto.com

my qq num is 49000448.

my god ,i am not oldbey,but OLDBOY!

    2.  $  m$  以m结尾的行 以.....结尾的行

[root@dzc oldboy]# grep "m$" oldboy.txt

my blog is http://oldboy.blog.51cto.com       注意每行的最后不要有空格,否则找不到内容   

  3. ^$ 空行 这一行里面什么符号都没有

[root@dzc oldboy]# grep -n "^$" oldboy.txt    显示文件的空行并显示行号

  4. .(点) 任意一个字符

[root@dzc oldboy]# grep "oldb.y" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY!

[root@dzc oldboy]# grep -o "oldb.y" oldboy.txt     -o只输出文件中匹配到的部分。

oldboy

oldboy

oldbey   

  5. \ 撬棍 转义字符 脱掉马甲打回原形   

找出文件中以小数点(.)结尾的行

[root@dzc oldboy]# grep -n "\.$" oldboy.txt

2:I teach linux.

6:my qq num is 49000448.

7:not 4900000448.

  6. * 前一个文本连续出现了0次或1次以上

0000

连续出现了0次 就是没有出现

贪婪性---能有多少,显示多少

[root@dzc oldboy]# grep -o "0*" oldboy.txt

000

00000

7   .* 所有内容 包括空行

(所有) 连续出现的时候 贪婪性

[root@dzc oldboy]# grep "^.*o" oldboy.txt

I am oldboy teacher!

I like badminton ball ,billiard ball and chinese chess!

my blog is http://oldboy.blog.51cto.com

8   [abc] 筐 表示一个整体 相当于是一个字符 a或b或c

[root@dzc oldboy]# grep "[a-z]" oldboy.txt     找小写字母

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinse chess!

[root@dzc oldboy]# grep "[a-zA-Z]" oldboy.txt      找大小写的字母

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball and chinse chess!

9   [^abc] 筐 表示一个整体 排除a或排除b或排除c

[root@dzc oldboy]# grep "[^acb]" oldboy.txt

1.5.1 grep -v 排除 [^abc]

grep -v 排除行

[^abc] 字符 文字

1.5.2 练习1:以大写字母开头的行

[root@dzc oldboy]#  grep "^[A-Z]" oldboy.txt

1.5.3 练习2:以小写字母结尾的行

[root@dzc oldboy]# grep "[a-z]$" oldboy.txt

1.5.4 练习3:以 m或n或o开头的 并且以  m或g 结尾的行

[root@dzc oldboy]# grep "^[mon].*[mg]$" oldboy.txt

1.5.5 小结

  特殊符号-通配符-基础正则表达式

1.特殊符号

&&  >>   >  / $ .   ..  ~  |   !  #

2.通配符* {} 

3.正则

1)按照一行

2)^ $ ^$  .*  [] \

1.6 扩展正则表达式

1.6.1  + 前一个字符连续出现了一次或一次以上

连续出现 -- 重复

[root@oldboyedu-40-nb oldboy]# egrep  "0+" oldboy.txt

my qq num is 49000448.

not 4900000448.

 

[root@oldboyedu-40-nb oldboy]# egrep -o  "0+" oldboy.txt

000

00000

补充:

grep -o grep命令每次找到的东西,grep执行过程 但是不会显示空行

 

1.6.2 取出文件中连续出现的大写字母取出来

[root@dzc data]# egrep -o "[A-Z]+" oldboy.txt

I

I

I

OLDBOY

[root@dzc data]# egrep -o "[A-Z]{2,6}" oldboy.txt

OLDBOY

1.6.3  | 或者

[root@dzc data]# egrep "oldboy|oldbey" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY!

1.6.4  () 小括号里面的内容是一个整体 相当于是一个字符 反向引用

[root@dzc data]# egrep "oldb(o|e)y" oldboy.txt

I am oldboy teacher!

my blog is http://oldboy.blog.51cto.com

my god ,i am not oldbey,but OLDBOY!

1.6.5 反向引用

  1. 先把你要的内容保护起来 ...(你要的内容)...
  2. 在使用 \1 \2 \3

[root@dzc data]# echo 123456 |sed -r 's#..(..)..#\1#g'

34

1.6.6  {}   0{n,m}取出0连续出现最少n次,最多m次

[root@dzc data]# egrep "0{2,3}" oldboy.txt

my qq num is 49000448.

not 4900000448.

[root@dzc data]# egrep "0{2,4}" oldboy.txt

my qq num is 49000448.

not 4900000448.

 取出文件中连续出现3-6次的字母 

[root@dzc data]# egrep "[a-zA-Z]{3,6}" oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball ,billiard ball an chinese chess!

my blog is http://oldboy.blog.51cto.com

our site is http://www.etiantian.org

my qq num is 49000448.

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

1.6.7 ? 前一个字符连续出现了 0次或1次

[root@dzc data]# cat a.log

good

gd

god

goood

[root@dzc data]# egrep "gd|god" a.log

gd

god

[root@dzc data]# egrep "go?d" a.log

gd

god

1.6.8 小结

基础正则

^   $  ^$   .*  [abc]  [a-z]  [^abc]

扩展正则表达式

 + | () {} ?

基础正则与扩展正则

egrep    sed -r    awk

 

 

 

本博文中所使用的系统版本为: CentOS release 6.9 (Final) 内核版本为: 2.6.32-696.10.1.el6.x86_64 linux正在持续学习中,如有雷同请见谅!!!

posted @ 2017-11-10 09:14  巴黎斜塔  阅读(168)  评论(0编辑  收藏  举报