Linux正则表达式

正则表达式,是用来匹配文件里的文本内容的字符串;文件通配符,是用来匹配文件名称的。

正则表达式REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符),不表示字符字面意义,而表示控制或通配的功能。

程序支持:grep,sed,awk,vim, less,nginx,varnish等

正则表达式可以分两类: 1、基本正则表达式:BRE  2、扩展正则表达式:ERE

正则表达式引擎:

            采用不同算法,检查处理正则表达式的软件模块【PCRE模块】

            PCRE(Perl Compatible Regular Expressions)

元字符分类:字符匹配、匹配次数、位置锚定、分组【见图】

帮助:man 7 regex

---------------------------------------------------------------------------------------

字符匹配实例:

        echo abbc | grep a..c           #匹配a..c

        ls |grep -w "..."                        #匹配

        ls |grep -w ".\.."                       # \.转义,转换为字符的本身的含义。

        grep "r..t" /etc/passwd          #

        [root@centos7 app]# echo axcdef |grep "a[xyz]c" #取括号内任意一个字符匹配

        [root@centos7 app]# echo abcdef |grep "a[^xyz]c" #排除括号内的字符

次数匹配实例:

        echo axxxb |grep "ax*b"

        ls | grep ".*\.txt"

        echo abccdd | grep "a[a-z]*c" #

        echo abccdd | grep "a[a-z]\?c" #

实验:#文件内容# cat google.txt

--------------------------------------

google

goooooooooooooogle

gogle

goooooooooooooooooooooooogle

ggle

goooooooOOOOOOoooole

----------------------------------------以下是匹配以上内容--------------------

        grep "go\?gle" google.txt #匹配前面的o字符0次或1次

        grep "go\+gle" google.txt #匹配前面的o字符至少1次及1次以上

        echo "1abx" | grep "[a-z.]\+" #在中括号内.不需要转义

        grep "go\{14\}gle" google.txt #精确匹配前面的o字符14次

        grep "go\{2,\}\gle" google.txt #显示匹配前面的o字符至少2次

        grep "go\{10,20\}\gle" google.txt #匹配前面的o字符至少10次,至多20次

        grep "go\{,10\}\gle" google.txt #显示匹配o字符至多10次

位置锚定实例:

        [root@centos7 app]# grep "^root" passwd

        [root@centos7 app]# grep "bash$" passwd

        [root@centos7 app]# grep -v "^#" /etc/fstab | grep -v ^$

        [root@centos7 app]# grep -v "^[[:space:]]*$" f1 #过滤空行

        [root@centos7 app]# grep "\" passwd #匹配右侧

        [root@centos7 app]# grep "\" passwd #匹配整个单词

        [root@centos7 app]# grep "\<root" passwd #匹配左侧

分组:\(\) 将一个或多个字符捆绑在一起,当作一个整体进行处理

后向引用:\1,\2,\3...........

或者:\|

实例:

        [root@centos7 app]# echo wangwangwang | grep "\(wang\)\{3\}"

        [root@centos7 app]# grep "^\(.*\):.*/\1$" passwd #开头"^\(.*\):  中间.*  结尾\1$"

        [root@centos7 app]# grep "^a\|^b.*" passwd

        [root@centos7 app]# grep "^\(a\|b\).*" passwd #开头^  中间分组\(a\|b\)  结尾 .*

        [root@centos7 app]# echo bxy | grep "\(a\|b\)xy" #\(a\|b\)xy为分组,表示axy或bxy

综合实例:

        [root@centos7 app]# grep -o " [0-9]\+" /etc/redhat-release |grep -o "[0-9]\+" #获取Linux版本号

        [root@centos7 app]# cat passwd |grep "^\(\\).*\([0-9]\+\):\2.*\1$"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础正则表达式 LANG=C A-Z a-z连续LANG=zh_CN a A b B...如果在语系LANG=...
    菲胖阅读 640评论 0 1
  • 正则表达式 关于正则表达式相信很多学计算机的人都听说过 尤其是做编程行业的人 那什么是正则表达式 正则表达式,又称...
    数据革命阅读 932评论 0 1
  • 使用正则表达的命令有grep、awk、sed 正则表达式规则样例 在passwd取出以r开头,以n结尾的行数据 s...
    明明德撩码阅读 481评论 0 1
  • 基础命令 主要的命令和快捷键 Linux系统命令由三部分组成:cmd + [options]+[operation...
    485b1aca799e阅读 1,136评论 0 0
  • 依稀记得那是个有阳光的午后,我和妖妖坐在走廊旁的椅子上,她边听着戏边绣着花,而我听着音乐看着书,楼下车辆缓缓行...
    幽灵懒懒阅读 544评论 2 1