ZBHBK

linux系统中的正则表达式和通配符

一、通配符基础知识

        功能:用一些特殊的符号,可以实现某些特殊的功能
        适用范围:是命令行中的普通命令或脚本程序中

二、通配符分类

     (1)模糊匹配
                    *:匹配所有字符(一个或多个)
                    ?:匹配单个字符(有且只有一个)
               [abcd]:匹配任意一个字符。其中abcd可以是不连续的
                [a-z]:匹配连续的任意单个字符或数字
                !或^:取反,如:[^1-9]不是1至9的单个字符。调用最近使用的符合字符开头的命令
     (2)与路径和位置有关的特殊符号
                    ~:家目录
                    -:上一次的目录
                    .:当前目录
                   ..:上一级目录
     (3)引号相关
                    ':单引号,所见即所得,原样输出单引号里面的内容
                    ":引用字符串,特点是会解析变量、命令
                   ``:反引号,引用命令。希望系统把字符串当作命令就用反引号。等价于$()
                       用途:比如打包的时候希望包名能够按日志来:tar -zcvf  a_$(date).tar.gz  ./a.txt
     (4)其他字符
                    ;:命令分隔符
                    #:管理员提示符号,注释符号
                    $:普通用户提示符,调用变量使用
                    |:管道符,将前面的数据流交给后面的命令处理
                    \:转义字符,让字符还原本义
                   {}:生成序列、引用变量让变量成为一个整体
                   &&:并且
                   ||:或者
     (5)重定向

三、正则表达式

     1、基础知识
           (1)概念
                    what:表达式:是为处理大量的字符串及文本而定义的一套规则和方法
                    why:提高效率,快速获取到想要的内容
                    where:适用于这三个命令:grep(egrep)、sed、awk。(注意:正则是以行为单位,一次处理一行)
                    how:
           (2)正则的特点
                   1)为处理大量文本及字符串而定义的一套规则和方法
                   2)其工作时以行为单位进行,即一次处理一行
                   3)通过正则表达式可以将复杂的处理任务化繁为简,提供操作Linux的效率
                   4)仅被三剑客命令(grep、egrep、sed、awk)支持,其他命令无法使用
     2、正则表达式的分类
           (1)基本正则表达式(和命令grep使用)
                   1)^:尖角号,以什么开头。如:^oldboy,以oldboy开头的行
                   2)$:以什么结尾。如oldboy$,以oldboy结尾的行
                         筛选所有的目录:ls -hl|grep "^d" ./
                                        ls -hl|grep "/$" ./
                   3)^$:筛选空行,即筛选没有内容的那一行
                   4).:匹配任意一个且只有一个字符,类似于通配符的?
                   5)\:转义字符
                   6)*:重复前面字符0次或者多次
                        .*:所有的,包含空行也会显示出来
                   7)^.*:组合符,匹配以任意0个或多个字符开头的行
                        .*$:以任意0个或多个字符结尾的行
                   8)[abc]:匹配集合内的任意一个字符a或b或c
                        [^abc]:匹配不包含集合内的任意字符的行
           (2)扩展正则表达式(和egrep命令使用)
                   1)+:匹配前一个字符1次或1次以上

posted on 2020-11-23 14:39  ZBHBK  阅读(152)  评论(0编辑  收藏  举报

导航