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- [^#^$] [^$] [^#$] []中 $ . 没有特殊含义