首页 > 代码库 > linux正则表达式的使用
linux正则表达式的使用
正则表达式的使用
1.1 创建环境
cat >q.txt<<EOF
oldboy oldboy
hellooldboy hellooldboy
awkoldboy awkoldboy
sedoldboy sedoldboy
oldboyedu oldboyedu
EOF
取出只有oldboy的行
grep "\boldboy\b" q.txt
实例1-1反向引用
[root@oldboyedu-39-nb~]# #####第一个里程碑-反向引用(先保护起来,然后使用)
[root@oldboyedu-39-nb~]# echo 123456|sed -r ‘s#..(..)..#\1#g‘
34
[root@oldboyedu-39 /]# echo 123456|sed -r‘s#(.).(..).(.)#\1\2\3#g‘
1346
1. *0次或多次 + 1次或多次 ? 0次或1次 {} 自定义几次或几次到几次
1.2 正则表达式总结
egrep/grep了解,简单看看效果,结果。
egrep/grep -o参数看正则到底匹配了什么。
配合grep,egrep,sed -r,awk更为强大。
1.3 正则表达式的参考资料
man grep
infogrep
man 7 glob
linux正则表达式语法
http://aresxin.blog.51.cto.com/4734097/1602624
正则表达式30分钟入门教程
http://deerchao.net/tutorizls/regex/regex.htm.htm#mission
1.4 sed在正则表达式中的使用
实例1-2 在/etc/hosts中取出644或0644
进入环境:[root@oldboyedu-39-nb ~]# stat/etc/hosts
####方法一
[root@oldboyedu-39-nb ~]# stat /etc/hosts
[root@oldboyedu-39-nb ~]# stat /etc/hosts|awk‘NR==4‘|sed ‘s#^.*(0##g‘|sed ‘s#/.*$##g‘
644
方法二:
[root@oldboyedu-39-nb ~]# stat /etc/hosts|awk‘NR==4‘|sed -r ‘s#^.*\(0(.*)/-.*$#\1#g‘
644
###方法三 awk
[root@oldboyedu-39-nb ~]# stat /etc/hosts
[root@oldboyedu-39-nb~]# stat /etc/hosts |awk ‘NR==4‘|awk -F "[0/]" ‘{print $2}‘
644
1.5 sed反向引用取出/etc/hosts文件权限图解
实例1-3
##找出oldboy.txt 中 以m或n开头并且以.或m结尾的行
[root@oldboyedu-39-nb~]# cat oldboy.txt
[root@oldboyedu-39-nb~]# ###第一个里程碑-m或n开头的
[root@oldboyedu-39-nb ~]# grep"^[mn]" oldboy.txt
[root@oldboyedu-39-nb~]# ###第二个里程碑-找出以.或m结尾的
[root@oldboyedu-39-nb ~]# grep "[.m]$"oldboy.txt
[root@oldboyedu-39-nb~]# ####[]中 正则表达式里面的符号 特殊符号 没有特殊含义。
[root@oldboyedu-39-nb~]# grep ".$" oldboy.txt
[root@oldboyedu-39-nb~]# ####第三个里程碑-并且
[root@oldboyedu-39-nb ~]# grep"^[mn].*[.m]$" oldboy.txt
1.6 取出网卡的ip地址和10.0.0.255
实例1-4
[root@oldboyedu-39-nb ~]# #取出网卡的ip地址和10.0.0.255
[root@oldboyedu-39-nb ~]# ifconfig eth0
[root@oldboyedu-39-nb ~]# ifconfig eth0 |sed -n‘2p‘
[root@oldboyedu-39-nb ~]# ifconfig eth0 |sed -n‘2p‘ |sed -r ‘s#^.*dr:(.*) Bc.*t:(.*) M.*$#\1#g‘
10.0.0.200
[root@oldboyedu-39-nb ~]# ifconfig eth0 |sed -n‘2p‘ |sed -r ‘s#^.*dr:(.*) Bc.*t:(.*) M.*$#\2#g‘
10.0.0.255
[root@oldboyedu-39-nb ~]# ifconfig eth0 |sed -n‘2p‘ |sed -r ‘s#^.*dr:(.*) Bc.*t:(.*) M.*$#\1\2#g‘
10.0.0.20010.0.0.255
[root@oldboyedu-39-nb ~]# ifconfig eth0 |sed -n‘2p‘ |sed -r ‘s#^.*dr:(.*) Bc.*t:(.*) M.*$#\1 \2#g‘
10.0.0.200
1.7 使用awk取出网卡的ip地址和10.0.0.255
方法三 awk方法
[root@oldboyedu-39-nb ~]# ifconfig eth0|awk‘NR==2‘
[root@oldboyedu-39-nb ~]# ifconfig eth0|awk‘NR==2‘|awk -F "[ :]" ‘{print $13}‘
10.0.0.200
[root@oldboyedu-39-nb~]# ifconfig eth0|awk ‘NR==2‘|awk -F "[ :]+" ‘{print $4}‘
10.0.0.200
10.0.0.255
[root@oldboyedu-39~]# ifconfig eth0|awk -F"[ :]+" ‘NR==2{print $4,$6}‘
10.0.0.20010.0.0.255
方法四
取出ip地址和 255.255.255.0
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk ‘NR==2‘|awk -F "[:]+" ‘{print $4,$NF}‘
10.0.0.200
255.255.255.0
方法五
取ip地址 取权限
[root@oldboyedu-39-nb ~]# ifconfig eth0
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk -F"addr:" ‘NR==2{print $2}‘
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk -F"addr:|Bcast:" ‘NR==2{print $2}‘
10.0.0.200
1.8 +的使用
重新认识下 + 连续出现
实例1-5
用法一
[root@oldboyedu-39-nb ~]# echo"##########1@@@@@@@@@@2"
##########1@@@@@@@@@@2
[root@oldboyedu-39-nb ~]# echo"##########1@@@@@@@@@@2" |grep "[#@]"
##########1@@@@@@@@@@2
[root@oldboyedu-39-nb ~]# echo "##########1@@@@@@@@@@2"|grep "[#@]" -o
#
用法二
[root@oldboyedu-39-nb ~]# echo"##########1@@@@@@@@@@2" |egrep "[#@]+"
##########1@@@@@@@@@@2
[root@oldboyedu-39-nb ~]# echo"##########1@@@@@@@@@@2" |egrep "[#@]+" -o
##########
@@@@@@@@@@
[root@oldboyedu-39-nb ~]#
[root@oldboyedu-39-nb ~]# echo"##@@@@@@###@@@@#####1@@@###@@@@@@@2" |egrep "[#@]+"
##@@@@@@###@@@@#####1@@@###@@@@@@@2
[root@oldboyedu-39-nb ~]# echo"##@@@@@@########1@@@###@@@@@@@2" |egrep "[#@]+"
##@@@@@@########1@@@###@@@@@@@2
[root@oldboyedu-39-nb ~]# echo"##@@@@@@########1@@@###@@@@@@@2" |egrep "[#@]+" -o
##@@@@@@########
@@@###@@@@@@@
1.9 []在正则表达式中的使用
###[] 正则表达式会认为中括号里面的内容都是一样的 abc
###1.在我的筐里面
###2.不在我的筐里面
实例1-6
[root@oldboyedu-39-nb ~]# echo"##########1@@@@@@@@@@2" |awk -F "[#@]+" ‘{print $2}‘
1
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk‘NR==2‘|sed ‘s#:# #g‘
1.10 cut的使用
方法四-cut
##先把冒号替换为空格取第13列
实例1-7
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk‘NR==2‘|sed ‘s#:# #g‘
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk‘NR==2‘|sed ‘s#:# #g‘|cut -d " " -f13
10.0.0.200
##先通过:分割,然后通过空格分割
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk‘NR==2‘|cut -d ":" -f2
10.0.0.200
Bcast
[root@oldboyedu-39-nb ~]# ifconfig eth0 |awk‘NR==2‘|cut -d ":" -f2|cut -d " " -f1
10.0.0.200
本文出自 “heyong” 博客,请务必保留此出处http://heyong.blog.51cto.com/13121269/1954911
linux正则表达式的使用