首页 > 代码库 > linux正则表达式

linux正则表达式

 linux正则表达式

1.1 定义

过滤,在文件中找东西

省事,提高我们的效率

正则表达式就是为了处理大量的文字、文本、字符串而定义的一套规则和方法

linux正则表达式一般以行为单位处理的

一次处理一行

1.2 正则表达式的特点

linux运维工作,大量过滤日志文件,化繁为简,找东西

简单、高效、易用

正则表达式是高级工具:三剑客都支持

 

1.3 正则表达式与通配符的区别

通配符是用来找文件,linux下面大部分命令都可以用

    (ls   *  .txt    cp    /tmp)

正则表达式用来找文本、文字、文件内容常用的地方就是三剑客

 

1.4 正则表达式使用注意事项

1.正则表达式是按照行来处理

2.grep |egrep 给grep:egrep找到的内容加上颜色

grep

cat>>/etc/profile<<EOF

alias egrep=‘egrep--color=auto‘

alias grep=‘grep --color=auto‘

EOF

source  /etc/profile

 

1.5 正则表达式的学习

1.5.1 基础正则表达式

^  $   .   *   []    [^]

例:

1.5.1.1 创建环境

cat >>/oldboy.txt<<EOF

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinesechess!

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.5.2 扩展正则表达式

+   |   ?   {}

 

$   以....结尾

找出以m结尾的

grep "$m" oldboy.txt

cat -An oldboy.txt

 

1.6 正则表达式贪婪性

-----.*   * +  {}

正则表达式的

##贪婪  有多少钱拿到多少钱能吃多少 吃多少 能匹配多少匹配多少

##表示所有的时候 .*

正则表达式的贪婪性

1.6.1 1

找出文件中的大小写字母和数字

grep -n "[a-z0-9A-Z]" /oldboy.txt

#grep "数字小写字母"

1.6.2 不是mn开头的行

grep "^[^mn]" /oldboy.txt

 

1.6.3 [^abc] 排除a 或排除b 或排除c

grep "[abc]" oldboy.txt

grep "[^abc]" oldboy.txt

 

1.6.4 ^      以。。。。。开头的行

^oldboy 

^m

$      以xxxxxx结尾

以m结尾的行

grep "m$" oldboy.txt

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

1.6.5 ^$ 空行

空行这一行里面啥也没有 没有任何的符号  空格

grep " "  oldboy.txt

 

1.6.6 取出oldboy.txt里面的空行 并显示行号

[root@oldboyedu-39-nb ~]#cat -An oldboy.txt

     1  Iam oldboy teacher!$

     2  Iteach linux.$

     3  $

     4  Ilike badminton ball ,billiard ball and chinese chess!$

     5  myblog is http://oldboy.blog.51cto.com$

     6  $

     7  oursite is http://www.etiantian.org$

     8  $

     9  myqq num is 49000448.$

    10  $

    11  not4900000448.$

    12  mygod ,i am not oldbey,but OLDBOY!$

 

[root@oldboyedu-39-nb ~]# grep -n "^$" oldboy.txt

 

1.7 .  代表且只能代表任意"一个"字符/文本/符号(不匹配空行)

1.7.1

[root@oldboyedu-39-nb ~]# grep "."  oldboy.txt

 [root@oldboyedu-39-nb ~]# grep -o"."  oldboy.txt

1.7.2 ####找出 oldboy.txt 以点结尾的行

 

[root@oldboyedu-39-nb ~]# grep ".$" oldboy.txt

[root@oldboyedu-39-nb ~]# grep "\.$" oldboy.txt

I teach linux.

my qq num is 49000448.

not 4900000448.

 

1.8 \  撬棍  转义字符 让有特殊含义的字符脱掉马甲,现出原形

   去掉特殊含义  脱掉马甲

  

   grep "\.$"oldboy.txt

 

####

*  前一个字符连续出现了0次或多次

连续出现0次 就是啥也没有

 

[root@oldboyedu-39-nb ~]# grep "0*" oldboy.txt

###*表示连续出现0次的问题(了解)

[root@oldboyedu-39-nb ~]# #连续出现0次 就是啥也没有

[root@oldboyedu-39-nb ~]# #"0*"   连续出现0次的时候 相当于什么都没有就是 ""

[root@oldboyedu-39-nb ~]# #会把整个文件都显示出来

[root@oldboyedu-39-nb ~]# grep "" oldboy.txt

 

[root@oldboyedu-39-nb ~]# grep -o "0*" oldboy.txt

 

1.9 .*    所有 任何东西   

用一个grep怎么找出以m开头并且以m结尾的行             ###=======stu*.txt  所有以stu开头以.txt结尾的文件

[root@oldboyedu-39-nb ~]# grep "^m.*m$" oldboy.txt

 

1.10 正则表达式贪婪性-----.*   * +  {}

[root@oldboyedu-39-nb ~]# grep "^.*o" oldboy.txt

####贪婪 有多少钱拿到多少钱 能吃多少 吃多少 能匹配多少匹配多少

####表示所有的时候 .*

##正则表达式的贪婪性

 

1.11 []   整体 

[abc]   一次就找出 abc中的任何一个 a或b或c  

grep "[abc]" oldboy.txt

grep -o "[abc]" oldboy.txt

grep "[abcdefghijklmnopqrstuvwxyz]" oldboy.txt

grep  "[a-z]"  oldboy.txt

grep  "[A-Z]"  oldboy.txt

grep  "[0-9]"  oldboy.txt

1.12 找出文件中的大小写字母和数字?

[root@oldboyedu-39-nb ~]# #找出文件中的大小写字母和数字?

[root@oldboyedu-39-nb ~]# grep"[a-zA-Z0-9]" oldboy.txt

[root@oldboyedu-39-nb ~]# grep "[a,b]"oldboy.txt

 

1.13 [^abc] 排除a 或排除b 或排除c

[root@oldboyedu-39-nb ~]# grep "[abc]"oldboy.txt

 [root@oldboyedu-39-nb~]# grep "[^abc]" oldboy.txt

1.14 不是mn开头的行

[root@oldboyedu-39-nb ~]# ##以

[root@oldboyedu-39-nb ~]# grep "^[mn]"oldboy.txt

 [root@oldboyedu-39-nb~]# grep "^[^mn]" oldboy.txt

-v     [^abc]

-v  排除某几行

[^abc]  排除a或b或c

基础正则表达式

^ $ .*  [abc]   [^abc]


本文出自 “heyong” 博客,请务必保留此出处http://heyong.blog.51cto.com/13121269/1954028

linux正则表达式