##正则表达式特殊字符解析
"^" | 匹配行首 |
"$" | 匹配行尾 |
"^$" |
匹配整行为空,空行 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
grep -n "^m" oldboy.log 打印以m开头的行 grep -n "m$" oldboy.log 打印以m结尾的行 grep -n "^$" oldboy.log 打印空白行 grep -nv "^$" oldboy.log 打印非空的行
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的行
grep "[a-z]"oldboy.log 打印所有包含小写字母a-z的行 grep "[^a-z]"oldboy.log 打印所有不包含小写字母a-z的行,否定
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次以上的行
##实例2:取出ifconfigeno167网卡的ip地址
(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‘
(2)awk
ifconfig eno16777736|sed -n ‘2p‘|awk ‘{print $2}‘ ifconfig eno16777736 |awk ‘NR==2{print $2}‘
正则表达式解析 & awk/sed/grep实用实例总结文档
时间: 2024-10-03 14:03:27