Shell脚本编程学习笔记(八)---- 正则表达式
本文已参与[新人创作礼]活动,一起开启掘金创作之路。
正则表达式
处理大量的字符串而定义的一套规则和方法,通过正则表达式快速过滤,替换或输出需要的字符串。 Linux一般以行为单位处理;PHP,java,python(Perl兼容PCRE)
特定字符
[[:space:]] 空格
[[:digit:]] [0-9]
[[:lower:]] [a-z]
[[:upper:]] [A-Z]
[[:alpha:]] [a-Z]
基础正则表达式
正则表达式实际上就是一些特殊字符,赋予了它特定的含义
^word //匹配以world开头的内容,vi/vim ^代表一行的开头。
world$ //匹配以world结尾的内容,vi/vim $代表一行的开头。
^$ //表示空行
. //表示且只能代表任意一个字符
\ //还原原型(转义,让原来的字符没有含义)
* //重复前面的一个字符0次或多次
.* //匹配所有字符。^.*以任意多字符开头,.*$以任意多个字符结尾。
[abc] //匹配字符集含中括号的任意字符
[^abc] //匹配不包含^后的任意字符的内容
{n,m} //重复n到m次,前一个重复的字符,n~m次
{n.} //重复前一个字符,至少n次
? //匹配之前的项一次或零次
+ //匹配之前的项一次或多次
() //创建一个用于匹配的子串
| //交替匹配|两边的任意一样ab(c|d)匹配abc或abd
例如
grep "^m" shell.txt //过滤以m开头的行
grep -vn "^$" shell.txt //过滤空行(^$),并且排除(v),并打印行号(n)
grep "." shell.txt //匹配任意字符,不包含空行
grep ".*" shell.txt //匹配任意字符,包含空行
grep "s.h" shell.txt //匹配单个任意字符,点代表任意字符
grep ".$" shell.txt //匹配以点结尾的
grep -o "8*" shell.txt //精确匹配到一个或多个含8的,去掉-o则可显示行号
grep [abc] shell.txt //匹配任意含a或含b或含c的字符
grep "[0-9]" shell.txt //匹配数字所在的行
grep "[a-z]" shell.txt //匹配所有的小写字母
grep "[^a-z]" shell.txt //去除所有的小写字母
grep "8{3}" shell.txt //匹配8重复三次的行
grep -E "8{3}" shell.txt //匹配8重复三次的行(不用转义符)
grep -E "8{3,5}" shell.txt //匹配8重复三到五次的行(不用转义符)
grep -E "8{3,}" shell.txt //匹配8重复至少三次的行(不用转义符)
grep -E "(www|888)" shell.txt //匹配888或www的字符(不用转义符)
grep -E "ww?" shell.txt //匹配ww的字符(不用转义符)
grep -E "[[:digit:]]" shell.txt //匹配数字
grep -E "[[:lower:]]" shell.txt //匹配小写
例如
查询网卡eth0的IP,子网掩码,网关
ifconfig eth0|grep "inet"|grep -oE "[0-9]+.[0-9]+.[0-9]+.[0-9]+"
感谢大家,点赞,收藏,关注,评论!
浙公网安备 33010602011771号