linux正则表达式

第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
211324198705244720500224197105168312
任 1231231231oldboy
任 3oldboy
任 lidao97303136098
任 alex2197303136098
任 350182197303oldgir
吕 211282199209113038150000198309176071371001197412221284130185200011215926362522198711278101
向 14052219961008852X

 

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

 

[root@oldboyedu50-lnb /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt
211324198705244720500224197105168312211282199209113038150000198309176071371001197412221284130185200011215926362522198711278101
向 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
原文地址:https://www.cnblogs.com/zeq912/p/9430383.html