##正则表达式特殊字符解析

"^"匹配行首
"$"匹配行尾
"^$"

匹配整行为空,空行

grep -v "^$"    打印非空的行

"." 代表且只能代表任意一个字符
"*"重复0个或多个前面一个的字符。例如"o*",重复一个或多个o
".*" 匹配所有字符。延伸: "^.*" -->以任意多个字符开头。".*$"-->以任意多个字符结尾
"\"让有特殊意义的字符,脱掉马甲,还原原型。例如"\.",就只代表“.”点本身
"[abc]"匹配"[]"中括号内的任意一个字符
"[^abc]"匹配不包含"^"后的任意一个字符的内容,即匹配不包含"a"|"b"|"c"的内容

(1)"a\{n,m\}"

(2)"a\{n,\}" 

(3)"a\{n\}”

(4)"a\{,m\}" 

(1)匹配将前一个字符,重复n->m次的内容,egrep/sed -r或者grep -E可以省去\转义。即将"a"字符重复n到m的内容匹配

(2)前一个字符至少重复n次

(3)前一个字符重复n次

(4)前一个字符最多重复m次。即将a重复0-m次的内容匹配

##实例1

#实战准备

mkdir -p /root/test0513/

调整字符集:exportLC_ALL=C    或者    echo "exportLC_ALL=C" >>/etc/profile && source /etc/profile

wKioL1fY9Z6x64KLAABAxeTmLIg911.png-wh_50

grep -n "^m" oldboy.log    打印以m开头的行
grep -n "m$" oldboy.log    打印以m结尾的行
grep -n "^$" oldboy.log    打印空白行
grep -nv "^$" oldboy.log    打印非空的行

wKioL1fY9gnSqRbUAABkrtRgOVk866.png

grep "." oldboy.log    打印包含任意字符的行,即空白行不包含字符,不打印
grep ".*" oldboy.log    任意字符重复0-n次,即所有打印所有行
grep ".*$" oldboy.log    打印以任意字符结尾,且重复0-n次,即包括空白行
grep "^.*" oldboy.log    打印以任意字符开头,且重复0-n次,即包括空白行
grep "old.*y" oldboy.log    打印old和y之间包含任意字符的行
grep "0*" oldboy.log        打印包含重复0次到任意多次0的行

wKiom1fY9k6yzvQJAADDfVmARH8708.png-wh_50


wKioL1fY90ri5L2yAAAXvp7BgNA413.png-wh_50


wKiom1fY922BTnUJAABTtlZ5DME913.png-wh_50

grep "[a-z]"oldboy.log    打印所有包含小写字母a-z的行
grep "[^a-z]"oldboy.log    打印所有不包含小写字母a-z的行,否定

wKiom1fY957ApFAXAABn-1-yrHM134.png-wh_50

grep "0\{1,9\}"oldboy.log    打印将0字符重复1-9次的行
grep "0\{3\}"oldboy.log    将0重复3次的行
grep "0\{,3\}"oldboy.log    将0重复0-3次的行
grep "0\{4,\}"oldboy.log    将0重复4次以上的行

wKiom1fY-2bBuKRuAAAUwmbRoH8263.png

wKioL1fY-2bhXuIQAAAVLPeUmhQ602.png

wKioL1fY-2bQN10iAAAzBbhlNqQ959.png

wKiom1fY-2fCpihuAAAQD-4VmDI289.png

##实例2:取出ifconfigeno167网卡的ip地址

wKioL1fY-P3RkGd0AABGcxGqVv8551.png

(1)sed正则匹配+后向引用

ifconfig eno16777736|sed -n '2p'|sed 's#^.*inet ##g'|sed 's# net.*$##g'
ifconfig eno16777736 |sed -n '2'p |sed -r 's#^.*inet (.*)#\1#g'|sed -r 's#(.*) netmask.*$#\1#g'
ifconfig eno16777736 |sed -n '2'p |sed -r 's#^.*inet (.*) netm.*$#\1#g'
ifconfig eno16777736|sed -nr '2s#^.*inet (.*) netmask.*$#\1#gp'

wKiom1fY-YHRGg_pAAA4bqQUqnU197.png

wKioL1fY-YHz_nkuAAAVKNxFyKc996.png

(2awk

ifconfig eno16777736|sed -n '2p'|awk '{print $2}'
ifconfig eno16777736 |awk 'NR==2{print $2}'

wKioL1fY-f2zHVynAAAWR9dTTDg216.png

wKiom1fY-f3hdcmZAAAVtELwkfc153.png