xml地图|网站地图|网站标签 [设为首页] [加入收藏]
来自 新濠国际登录平台 2019-09-30 17:15 的文章
当前位置: 新濠国际登录平台 > 新濠国际登录平台 > 正文

快速过滤,相当于是一个字符 

第1章 正则表达式

Day16,

linux运维正则表达式实战视频观看地址

QQ交流群 384467551

12.26&12.27

1.1 正则表达式

查找文本内容,快速过滤

第1章 扩展正则表达式

linux运维正则表达式实战

正则表达式

1.2 正则表达式分类

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

egrep  "0+" oldboy.txt  1次或1次以上 >=1

egrep  "0*" oldboy.txt  0次或0次以上 >=0

1.什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表12345 
通过正则表达式这些特殊符号,我们可以快速的过滤、替换需要的内容。
linux正则一般以行为单位处理的。

第1章 使grep/egrep 过滤出的东西加上颜色

cat >>/etc/profile<<EOF

alias grep='grep --color=auto'

alias egrep='egrep --color=auto'

EOF

 

source /etc/profile

alias grep egrep

1.2.1 基础正则

^    以…...开头的行 ^m

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

^$   空行(什么符号都没有)

.     任意一个字符,不会匹配空行

     (撬棍)转义字符

*     前一个字符连续出现0次或0次以上

.*     所有字符,包括空行

[]     相当于一个符号,每次匹配1个字符

[abc]  找出包含a或b或c

[^]    排除,排除[]里的每一个字符

[^abc] 找出除了a或除了b或除了c外

 

 

1.1.1 找到文本中的0

[[email protected] ~]# egrep  "0+" oldboy.txt

my qq num is 49000448.

not 4900000448.

[[email protected] ~]# egrep -o  "0+" oldboy.txt

000

00000

 

2.为什么要学习正则表达式?
再工作中,我们做linux运维工作,时刻面对着大量的日志,程序,命令的输出。
迫切的需要过滤我们需要的一部分内容,甚至是一个字符串。

第2章 正则表达式分类

1.2.2 扩展正则

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

|      或者

()     表示一个整体   sed反向引用/后向引用

{}       0{n,m} 数字0连续出现了至少n次,最多m次

?      前一个字符连续出现0次或1次   前一个字符有或没有

 

1.1.2 取出文件中的大写字母

[[email protected] ~]# grep -o "[A-Z]" oldboy.txt

I

I

I

O

L

D

B

O

Y

3.理解两个误区注意事项:
a.正则表达式的应用非常广泛,存在于各种语言中,PERL,PHP,JAVA等。
我们今天给大家讲解的就是linux的正则表达式,系统运维工作中常用的正则表达式
常用的正则表达式的命令为grep(egrep),sed,awk。
linux的三剑客很牛,要想三剑客玩得更好,那就一定离不开正表达式。

2.1 基础正则表达式:basic    regular expression  BRE

    ^  $  .  *  []  [^]   

    

1.3 基础正则与扩展正则的区别

1.1.3 取出连续出现的大写字母

[[email protected] ~]# egrep -o "[A-Z]+" oldboy.txt

I

I

I

OLDBOY

b.linux正则表达式和我们命令行中其他的命令使用的通配符是有本质区别的。

2.2 扩展正则表达式:extended regular expression  ERE

    |  +  ()  {}  ?

 

1.3.1 符号不同

基础正则: ^   $   ^$   .    .*    []    [^]

扩展正则: +   |   ()   {}   ?

 

1.1.4 显示所有的单词

[[email protected] ~]# egrep -o "[A-Za-z]+" oldboy.txt

I

am

oldboy

teacher

4.实验的3个注意事项:
a.linux正则一般以行为单位处理的。
b.alias grep='grep --color=auto'
c.注意字符集,LC_ALL=C,不是必须

2.3 正则与通配符区别:

          作用                    支持的命令

通配符:   查找文件名              Linux大部分命令都支持  以.txt结尾的文件       

 

正则:     在文件中过滤内容        sed,grep,awk  Python Java

 

1.3.2 支持的命令不同

基础正则:grep  sed  awk

扩展正则:egrep(grep  -E)    sed –r      awk

 

1.2  | 或者

表示找其中的一个或者是另外一个。

[[email protected] ~]# egrep "oldboy|oldbey" oldboy.txt  -o

oldboy

oldboy

oldbey

找/etc/services 中的两个端口

[[email protected] ~]# egrep "3306|1521" /etc/services

mysql           3306/tcp                        # MySQL

mysql           3306/udp                        # MySQL

ncube-lm        1521/tcp                # nCube License Manager

ncube-lm        1521/udp                # nCube License Manager

       找其中的A或者B或者C。

[[email protected] ~]# egrep "A|B|C" oldboy.txt

my god ,i am not oldbey,but OLDBOY!

       找到12或者56替换成空。

[[email protected] ~]# echo 123456|sed -r 's#12|56##g'

34

5.linux正则表达式细节
基于grep来讲的。
基础正则表达式:BRE(basic regular expression)
1)^word 表示搜索以word开头的内容。
2)word$ 表示搜索以word结尾的内容。
3)^$    表示空行,不是空格。
4).      代表且只能代表任意一个字符。(当前目录,加载文件)
5)      转义字符,让有着特殊身份意义的字符,脱掉马甲,还原原型。
          例如:.只表示小数点,还原原始小数点的意义。
6)*      重复0个或多个前面的一个字符。不代表所有了。
7).*     匹配所有的字符。^.* 任意多个字符开头。
8)[abc]  匹配字符集合内任意一个字符[a-z]
9)[^abc] ^再中括号里面表示非,不包含a或b或c。
10){n,m} 重复n到m次,前一个字符。
    {n,} 至少N次,多了不限。
    {n}  N次
    {,m} 至多m次,少了不限。
   注意:grep 要对{转义} {},egrep(grep -E)不需要转义
基础的正则就讲完了。
6.grep命令参数小结
-v 排除匹配的内容
-E 支持扩展的正则表达式
-i 忽略大小写
-o 只输出匹配的内容
--color=auto 匹配的内容显示颜色。
-n 再行首显示行号

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

  1.正则表达式按照行为单位处理

  2.正则神坑-中文符号

   ‘’ “” () 。 * …… ¥ | {}  【】

    ''   ""   ()  .  *  ^    $ | {}   []

3.区分大小写

新濠国际登录平台, 

环境 

cat oldboy.txt

I am oldboy teacher!

I teach linux.

 

I like badminton ball ,billiard ball and chinese chess!

my blog is

our size is

my qq is 49000448

 

not 4900000448.

my god ,i am not oldbey,but OLDBOY!

本文由新濠国际登录平台发布于新濠国际登录平台,转载请注明出处:快速过滤,相当于是一个字符 

关键词: