快速过滤

第1章 正则表明式

1.1 正则表明式

搜索文本内容,神速过滤

1.2 正则表明式分类

1.2.1 基本功正则

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

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

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

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

     (撬棍)转义字符

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

.*     所有字符,包括空行

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

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

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

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

 

 

1.2.2 扩充正则

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

|      或者

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

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

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

 

1.3 功底正则与扩展正则的分歧

1.3.1 符号不一致

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

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

 

1.3.2 匡助的一声令下不一样

基础正则:grep  sed  awk

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

 

1.4 ^ 以….最早的行 ^m

 

[root@zeq /oldboy]# grep '^m'  oldboy.txt

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

my qq is 49000448

my god ,i am not oldbey,but OLDBOY!

 

1.5 $ 以….结尾的行  $

 

cat -A 显示文件中所有符号  每行结尾都会有个$

[root@zeq /oldboy]# grep  ' $'  oldboy.txt

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

our size is http://blog.oldboyedu.com

 

1.6 . 任性三个字符,不会协作空行

[root@zeq /oldboy]# grep  '.' oldboy.txt

grep –o                                          grep命令执行过程

[root@oldboyedu50-lnb /oldboy]# grep -o '.' oldboy.txt

 

1.7 + 前三个字符接二连三现身1次或1次以上

[root@zeq /oldboy]# egrep '0+' oldboy.txt

my qq is 49000448

not 4900000448.

 

1.8 | 或者

[root@zeq /oldboy]# egrep 'oldboy|linux'   oldboy.txt

I am oldboy teacher!

I teach linux.

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

our size is http://blog.oldboyedu.com

 

1.9 – (卡塔尔国 表示二个整机  反向援用/后向援用

1.9.1 表示贰个少年老成体化

[root@zeq /oldboy]# egrep 'oldb(o|e)y'  oldboy.txt

I am oldboy teacher!

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

our size is http://blog.oldboyedu.com

my god ,i am not oldbey,but OLDBOY!

 

1.9.2 反向引用/后向援用

[root@oldboyedu50-lnb /oldboy]# echo 123456|sed -r 's#(.*)#<1>#g'

<123456>                                                    1 表示第一个括号

 

1.10 {} 0{n,m} 数字0三回九转出现了足足n次,最多m次

[root@oldboyedu50-lnb /oldboy]# egrep '0{3,4}' oldboy.txt

my qq is 49000448

not 4900000448.



[root@oldboyedu50-lnb /oldboy]# cat id.txt

金 211324198705244720

万 500224197105168312

任 1231231231oldboy

任 3oldboy

任 lidao97303136098

任 alex2197303136098

任 350182197303oldgir

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X





[root@oldboyedu50-lnb /oldboy]# egrep '[0-9X]{18}' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

   XXXXXXXXXXXXXXXXXX

向 14052219961008852X



[root@oldboyedu50-lnb /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

 

第2章 取出eth0网卡的ip地址

2.1 方法1

[root@zeq /oldboy]# ip a s eth0 |awk 'NR==3'|awk  -F"[ /]+"  '{print $3}'

10.0.0.200

[root@oldboyedu50-lnb /oldboy]#

 

2.2 收取ifconfig eth0 ip地址和子网掩码

[root@zeq /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"[ :]+"  '{print $4,$NF}'

10.0.0.200 255.255.255.0