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 金 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
作者:Alan.zhang
本人小白,欢迎大家转载以及纠正错误,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接