通配符与正规

Linux I
第1章 通配符VS正则 1
1.1 找出oldboy.Txt中以mn开头的 1
1.2 找出oldboy.txt中以m或n开头并且以m或n结尾的行 1
1.3 排除大小写 排除数字 2
第2章 扩展正则 2

课前回顾:
特殊符号:引号 重定向 其他符号 位置 判断
第1章 通配符VS正则
通配符:找出文件名 大部分命令可以使用
正则:精确的过滤 给三剑客使用
正则表达式(regular Expression RE)
基础正则 (BRE Rasic Reg ular Expression)
^ 以..开头
$ 以。。。结尾
^$空行
.任意一个字符
前一个字符连续出现0个或0个以上
.
所有
[] 相当于是一个符号(每次匹配1个字符)找出包含a或b 或c 例:grep ‘[^abc]’ oldboy.txt
1.1 找出oldboy.Txt中以mn开头的

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

[^]除了a或b或c其余都有

1.3 排除大小写 排除数字
a-Z 是专门给grep用的

第2章 扩展正则

  • 前一个字符连续出现1次或1次以上 利用egrep匹配
    Egrep 过滤掉的不显示

取出连续出现的小写字母 先取出小写字母 再加+号 会依次输出

| 表示或者 应用时必须加引号

() 表示整体

()反向引用/后向引用
思路:把你想要的内容保护起来
Sed 在‘s###g’后两个井号之间使用 \数字 引用
前面保护后面使用

{} 0{n ,m} 前一个字符至少出现n次,最多出现m次

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

  • 一般与[]匹配 某一行的某一部分
    1.定位 取出某一行
    2.sed/awk 取出想要的内容
    取出网卡的IP地址
    IP a s eth0
    Ip address show eth0
    方法1
    [root@oldboyedu50-lnb /oldboy]# ip a s eth0 |awk 'NR==3'|awk -F"[ /]+" '{print $3}'
    10.0.0.200

取出ifconfig eth0 ip地址和子网掩码
方法1
[root@oldboyedu50-lnb /oldboy]# ifconfig eth0 |awk 'NR==2'
inet addr:10.0.0.200 Bcast:10.0.0.255 Mask:255.255.255.0
[root@oldboyedu50-lnb /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"[ :]+" '{print $4,$NF}'
10.0.0.200 255.255.255.0

方法2
[root@oldboyedu50-lnb /oldboy]# ifconfig eth0 |awk 'NR==2'
inet addr:10.0.0.200 Bcast:10.0.0.255 Mask:255.255.255.0
[root@oldboyedu50-lnb /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Bcast:" '{print $2}'
10.0.0.200

坑漏补:
正则表达式-坑1-grep '0' 会把文件内容都显示出来
#0
0次 没有 grep '' 会把文件内容都显示出来

0次以上 0 00000000000

正则表达式-坑2- [oldboy] 会把与oldboy 相关的挨个显示出来 加-o会单个显示内容

正则表达式-坑3- [^#^$] [^$] [^#$]
[]中 $ . 没有特殊含义

猜你喜欢

转载自blog.51cto.com/13860447/2153235