Cat-God-007

导航

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]+"

D8BC17FD9DA72597ED61702D0BE96CC9.jpg 感谢大家,点赞,收藏,关注,评论!

posted on 2022-06-05 00:06  CatGod007  阅读(1)  评论(0)    收藏  举报  来源