day 18 正则表达式与取出ip地址

复习:

特殊符号:

引号

重定向符号

位置

判断

其他符号

通配符 VS 正则表达式

通配符:找出文件名 大部分命令可以使用

正则:     精确的过滤 三剑客使用

 

正则表达式

基础正则

^

$

*

.*

 

 

 

 

1.1 找出oldboy.txt中以mn开头的行

[[email protected] oldboy]# grep "^[mn]" oldboy.txt

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

my qq is 49000448

not 4900000448.

my god,i am not oldbey,but OLDBOY!

 

blob.png

1.2 找出oldboy.txt中以mn开头并且以mn结尾的行

[[email protected] /oldboy]# grep '^[mn]'  oldboy.txt

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

my qq is 49000448

not 4900000448.

my god,but OLDBOY!

[[email protected] /oldboy]# grep '^[mn]'  oldboy.txt|grep '[mn] $'

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

 

blob.png

 

[[email protected] /oldboy]# grep '^[mn].*[mn]$'  oldboy.txt

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

 

blob.png

第2章 9个符号-  [^] [^abc]

       相当于是一个符号(每次匹配1个字符)

2.1 找出除了a或除了b或除了c

[[email protected] /oldboy]# grep '[^abc]'  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 size is http://blog.oldboyedu.com

my qq is 49000448

not 4900000448.

my god,but OLDBOY!

 

blob.png

 

2.2 #排除文件中的数字和大小写字母

[[email protected] /oldboy]# grep '[0-Z]' oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball,but OLDBOY!

blob.png

blob.png

小结:

^     ...开头的行

$     ...结尾的行

^$    空行

.     任意一个字符

*     0个或多个

.*    所有

[]    [abc]

[^]   [^abc]

 

 

()   小括号

[]   中括号

{}   大括号 花括号

 

 

扩展正则 ERE Extented Regular Expression)

 

第3章 10个符号- +

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

0连续出现

 

[[email protected] /oldboy]# egrep '0+' oldboy.txt

my qq is 49000448

not 4900000448.

 

 

blob.png

 

[[email protected] /oldboy]# grep -E '0+' oldboy.txt

my qq is 49000448

not 4900000448.

 

 

blob.png

 

 

[[email protected] /oldboy]# grep '0\+' oldboy.txt

my qq is 49000448

not 4900000448.

 

blob.png

 

有加号和没有加号的区别

-o显示过程

[[email protected] /oldboy]# egrep '0+' oldboy.txt –o   (一次多个

000

00000

blob.png

[[email protected] /oldboy]# egrep '0' oldboy.txt -o

0

0

0

0

0

0

0

0

 

blob.png

 

3.1.1 #取出连续出现的小写字母

 

[[email protected] /oldboy]# egrep '[a-z]+'  oldboy.txt 

blob.png

 

查看过程:

blob.png

第4章 11个符号-   |  或者

4.1 oldboylinux

[[email protected] /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

 

blob.png

 

4.2 #先备份 /etc/ssh/sshd_config 然后 排除 文件中的#号的行或空行

备份:     [[email protected] oldboy]# cp /etc/ssh/sshd_config{,.bak}

排除:

[[email protected] /oldboy]# egrep -v '^$|#' /etc/ssh/sshd_config

Protocol 2

SyslogFacility AUTHPRIV

PasswordAuthentication yes

ChallengeResponseAuthentication no

GSSAPIAuthentication yes

GSSAPICleanupCredentials yes

UsePAM yes

AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES

AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT

AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE

AcceptEnv XMODIFIERS

X11Forwarding yes

Subsystem   sftp    /usr/libexec/openssh/sftp-server

 

第5章 正则表达式-3-  [^#^$]  [^$] [^#$]

[] $ . 没有特殊含义

编辑一些符号,然后查看

[[email protected] /oldboy]# cat 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 size is http://blog.oldboyedu.com

my qq is 49000448

 

not 4900000448.

my god,but OLDBOY!

+++++\\\\\\!!!!$$$$$$^^^

####!!!^^^^^[email protected]@@@@####

 

blob.png

 

 

 

 

[[email protected] /oldboy]# grep '[^#^$]'  oldboy.txt(执行这条命令相当于是排除# ^ $ 三个符号)

I am oldboy teacher!

I teach linux.

I like badminton ball,billiard ball and chinese chess!

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

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

my qq is 49000448

not 4900000448.

my god,but OLDBOY!

+++++\\\\\\!!!!$$$$$$^^^

####!!!^^^^^[email protected]@@@@####

blob.png

 

[[email protected] /oldboy]# grep '\.$'  oldboy.txt

I teach linux.

not 4900000448.

 

blob.png

 

[[email protected] /oldboy]# grep '[.]$'  oldboy.txt

I teach linux.

not 4900000448.

blob.png

第6章 正则表达式-4-  [^abc]  vs  grep -v

 

[^a-z]          排除按字符 某个字符 某些字符

 

grep -v [a-z]   排除按行

6.1 排除a-z的小写字母

[[email protected] /oldboy]# grep '[^a-z]'  oldboy.txt

I am oldboy teacher!

I teach linux.

I like badminton ball,but OLDBOY!

+++++\\\\\\!!!!$$$$$$^^^

####!!!^^^^^[email protected]@@@@####

 

 

blob.png

 

 

 

 

6.2 排除含有a-z的行

[[email protected] /oldboy]# grep -v '[a-z]'  oldboy.txt

 

 

+++++\\\\\\!!!!$$$$$$^^^

####!!!^^^^^[email protected]@@@@####

 

blob.png

6.3 12个符号- () 表示一个整体  反向引用/后向引用

6.3.1 找出oldboyoldbey

找共同点:

         只差o和e两个字母,将它们作为一个整体 先保护起来,然后使用

[[email protected] /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,but OLDBOY!

 

blob.png

反向引用/后向引用

 

思路:把你想要的内容保护起来 ()

6.4  sed 's###g' 后两个井号之间使用  \数字 引用

 

[[email protected] /oldboy]# echo 123456

123456

[[email protected] /oldboy]# echo '<123456>'

<123456>

 

[[email protected] /oldboy]# echo 123456

123456

[[email protected] /oldboy]# echo '<123456>'

<123456>

[[email protected] /oldboy]# echo 123456|sed -r 's#(.*)#\1#g'

123456

[[email protected] /oldboy]# echo 123456|sed -r 's#(.*)#<\1>#g'

<123456>                        (将所有数字作为一个整体,在它们前后加上<>

 

echo  123456

12<34>56

[[email protected] /oldboy]# echo 123456|sed -r 's#(34)#<\1>#g'

12<34>56                        (将34作为一个整体,在它们前后加上<>

blob.png

[[email protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#\3#g'

56

[[email protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#\3\2#g'

5634

[[email protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#\3\2\1#g'

563412

[[email protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#\3<\2\1#g'

[[email protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#\3<\2>\1#g'

56<34>12

13个符号 { } 0{n,m} 前一个字符至少连续出现了n次,最多连续出现m

a{n,m}前一个数字连续出现至少n次最多m

a{n}前一个数字连续出现n

a{n,}前一个数字连续出现至少n

a{,m}前一个数字连续出现最多m

 

过滤出0至少出现三次,最多出现4

 

[[email protected] /oldboy]# egrep '0{3,4}' oldboy.txt

my qq is 49000448

not 4900000448.

[[email protected] /oldboy]# egrep '0{3}' oldboy.txt

my qq is 49000448

not 4900000448.

blob.png

 

blob.png

第7章 提取×××号练习题:

 [[email protected] /]# cat id.txt

金 211324198705244720

万 500224197105168312

任 1231231231oldboy

任 3oldboy

任 lidao97303136098

任 alex2197303136098

任 350182197303oldgir

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

 

 

[[email protected] /oldboy]# egrep '[0-9X]{18}' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

 

 

[[email protected] /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt

金 211324198705244720

万 500224197105168312

吕 211282199209113038

孔 150000198309176071

邹 371001197412221284

贺 130185200011215926

杜 362522198711278101

向 14052219961008852X

 

BRE

       1. ^

       2. $

       3. ^$

       4. .(点)

       5. *

       6. .*

       7. [] [a-z] [A-Z]  [0-9]

                   grep/egrep [a-Z]

       8. [^]

 

ERE小结

       1.+  

       2.|  

       3.() 

       4.{} 

       5. ? 

 

第8章 取出网卡的ip地址

ip a       s    eth0

ip address show eth0

 

 

某一行的某一部分

1.定位 取出某一行

2.sed/awk 取出想要的内容

 

方法1

 

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

10.0.0.200

[[email protected] /oldboy]#

 

blob.png

 

 

 

8.1 取出ifconfig eth0 ip地址和子网掩码

[[email protected] /oldboy]# ifconfig eth0 |awk 'NR==2'

          inet addr:10.0.0.200  Bcast:10.0.0.255  Mask:255.255.255.0

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

10.0.0.200 255.255.255.0

 

blob.png

 

 

[[email protected] /oldboy]# ifconfig eth0 |awk 'NR==2'

          inet addr:10.0.0.200  Bcast:10.0.0.255  Mask:255.255.255.0

[[email protected] /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Bcast:"  '{print $2}'

10.0.0.200

 

blob.png

 

[[email protected] oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Mask:|Bcast:"  '{print $2,$NF}'

10.0.0.200   255.255.255.0

[[email protected] oldboy]#

 

blob.png

 

blob.png


blob.png

 

小结:

1.取出ip地址

2.awk方法 -F (指定分隔符)

 

 

总结:

1.正则 BRE ERE

2.排除文件中的空行或以#开头的行 grep sed awk

3.取出网卡ip地址

ifconfig eth0

ip a

awk

sed

相关文章

jquery.validate使用攻略(表单校验) 目录 jquery.validate...
/\s+/g和/\s/g的区别 正则表达式/\s+/g...
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母...
this.optional(element)的用法 this.optional(element)是jqu...
jQuery.validate 表单动态验证 实际上jQuery.validate提供了...
自定义验证之这能输入数字(包括小数 负数 ) &lt;script ...