操作系统正则符号说明

摘要:
1.系统特殊符号回顾01.基本符号系列001.美元符号$的函数:1.用于检索变量的内容2.用于检索指定列的信息3.表示用户命令提示符4.表示行的结尾。在vim中,$符号可用于将光标跳转到当前行002的末尾。感叹号!

1.系统特殊符号回顾

  01.基础符号系列

    001.美元符号  $

      作用:

      1.用于取出变量中的内容

      操作系统正则符号说明第1张

       2.用于取出指定列的信息(awk)

      操作系统正则符号说明第2张

      3.表示用户命令提示符

      操作系统正则符号说明第3张

       4.表示一行的结尾

      在vim 中利用$符号可将光标跳转到当前行行尾

    002.叹号符号  !

      1.用于表示取反(逻辑非)或者排除的意思

      2.命令行中表示取出最近命令

      操作系统正则符号说明第4张

       3.用于表示强制操作处理     vim 底行模式用于保存退出  :wq!    :q! 

    003.竖线符号  |

      1.表示 管道符号,前一个命令的执行结果交给后一个命令处理

      2.经常配合xargs命令使用  xargs:将信息进行分组显示

    004.井号符号  #

      1.表示文件内容注释符号

      2.表示用户命令提示符: 超级用户 #  普通用户 $

  02.引号符号系列

    001.单引号  ''    

    输出信息所见即所得

    操作系统正则符号说明第5张

    002.双引号  ""    

    和单引号功能类似.但对特殊信息会做解析(调取变量$  反引号中的内容)

    操作系统正则符号说明第6张

    003.没有引号

    和双引号功能类似,但是可以直接识别通配符信息

    操作系统正则符号说明第7张

    004.反引号  ``

    先执行引号里面的命令,将结果交给引号外面的命令执行 

    操作系统正则符号说明第8张

    005.美元括号  $()

    等价于反引号  

  03.定向符号系列

    1.小于符号

      <  标准输入重定向

        tr "测试""替换" < oldboy/oldboy.txt    利用tr替换命令时会用到输入重定向

      <<   标准输入追加重定向

        cat >> oldboy/oldboy1.txt << EOF 在文件中输入多行内容时会用到输入追加重定向

        操作系统正则符号说明第9张

    2.大于符号

      >=1>  标准输出重定向

      >>=1>>  标准输出追加重定向

      2>  错误输出重定向

      2>>  错误输出追加重定向

    1.如何将正确信息和错误信息都输出到文件中(日志文件)

      命令  oldboy > oldboy.ok.txt 2> oldboy.error.txt

      操作系统正则符号说明第10张

      利用一条命令将正确与错误的结果输出到不同的文件中,当命令执行正确的时候,正确结果将输出到ok也就是正确文件中,当命令执行不正确的时候,错误记过将输出到error也就是错误文件中,这就实现了命令执行正确与否结果都会输出

    2.如何将正确信息和错误信息同时保留到文件中

      方法一:命令 oldboy >> oldboy.info.log 2>> oldboy.info.log

      操作系统正则符号说明第11张

      方法二:命令 oldboy &>> oldboy.info.log

      操作系统正则符号说明第12张

      方法三:命令 oldboy >> oldboy.info.log 2>>&1

      操作系统正则符号说明第13张

  04.路径信息系列

    001.单点符号  .    ---- 表示当前目录

    002.双点符号  ..    ---- 表示上级目录

    003.波浪符号  ~    ---- 表示用户家目录

    004.横线符号  -     ---- 两个目录之间切换

    两个目录中间进行切换其实是借助于一个变量实现的

    操作系统正则符号说明第14张

  05.逻辑符号系列

    001.与符号  &&

    表示前面的命令执行成功,再执行后面的命令

    操作系统正则符号说明第15张

     当前面的命令执行错误的时候,则直接报错,后面的命令被忽略,只有前面的命令正确执行时,后面的命令才会执行

    002.或符号  ||

    表示前面的命令执行失败,在执行后面的命令

    操作系统正则符号说明第16张

     当前面的命令执行错误时,后面的命令才会执行,当前面的的命令执行成功时,后面的命令不会执行

    003.非符号  !

2.系统通配符符号说明

  01.通配符号作用说明--按照文件名称进行匹配查找

    方便匹配找出多个数据文件(按照文件名称进行匹配查找)

  02.通配符号企业应用

    001.星号  *

      表示匹配所有内容信息

      find / -type f -name "*.txt"    --- 表示以什么结尾的文件

      find / -type f -name "old*"    --- 表示以什么开始的文件

    002.花括号  {}

      1.生成序列信息

        01.生成连续序列  echo {1..4}  echo {a..d}  echo {A..D}  echo {01..10}

        02.生成不连续序列  echo {1..10..2}奇数  echo {2..10..2}偶数

      2.生成组合信息

        echo A{,02}用来衍生出另一个常用功能

        操作系统正则符号说明第17张

        如何实现快速备份文件

          cp oldboy/alex.txt{,.bak}

          操作系统正则符号说明第18张

         如何实现快速还原备份文件

          mv oldboy/alex.txt{.bak,}

          操作系统正则符号说明第19张

3.系统正则符号介绍

  01.正则符号作用说明--按照文件内容进行匹配查找

    方便匹配找出文件中的内容信息

  02.正则表达符号分类

    001.基础正则表达式(basic regular expression)  ^ $ . * [] [^]

    002.扩展正则表达式(extended regular expression)  | + () {} ?

  03.正则符号注意事项

    001.按照每行信息进行过滤处理(以每行为单位进行筛选)

    002.注意正则表达符号禁止中文

    003.附上颜色信息进行正则过滤

  04.基础正则符号说明

    操作系统正则符号说明第20张

    001.尖角符号  ^  表示以什么开头的一行信息

    002.美元符号  $  表示以什么结尾的一行信息

    003.空行符号  ^$  找出空行信息

      操作系统正则符号说明第21张

    操作系统正则符号说明第22张

    上述为以下内容的测试环境

    004.点号符号  .  表示匹配任意一个切只有一个字符

    操作系统正则符号说明第23张

     文件中每一个字符都是任意字符,包括空格也是一个字符,系统会顺序匹配每一个字符,直到匹配完全部内容,空行不属于任何字符,所以不匹配,

    上述grep  -o      grep命令添加参数-o 意为显示匹配过程

    005.星号符号  *  匹配*前一个字符在每行连续出现0次或多次以上

    操作系统正则符号说明第24张

    操作系统正则符号说明第25张

    grep命令查询文件中0在每行连续出现的次数,可以看出连续出现三次的行,和连续出现5次的行被准确匹配,之所以会显示其他行,是因为*的特性,会匹配0连续出现次数为0的行即为没有0连续出现的行,所以其他行及空行也会被显示出来.

    006.点星符号  .*  匹配文件中所有信息(包括空行)

    操作系统正则符号说明第26张

     . 会匹配出任意内容,而*会匹配.连续出现那几行,没有出现的空行也会被显示出来.  .*  一般用来匹配文件全部内容

    此处会衍生出一个贪婪匹配问题:

    #此时需要匹配以m开头以o结尾的内容  即 my blo和my go 内容

    grep  '^m.* o'    ---- 以开头以o结尾,中间任意内容

    操作系统正则符号说明第27张

       上述我们利用^  和 .* 结合,匹配出以m 开头 以o 结尾 ,中间任意内容的信息.理论上来说只会出现,我们需要的内容,但显然不是,此时我们若想解决此类问题,必须必须对指定匹配内容进行修改

    #解决办法:指定具体信息阻止贪婪匹配

    操作系统正则符号说明第28张

     将需要匹配的内容进行具体描述用来加以区别,'^m.* blo'  意为以m开头 以   blo结尾的内容.

    007.转义符号    

      作用:

        1.将有特殊意义的符号,转义为普通信息进行识别

          操作系统正则符号说明第29张

         2.将没有意义的信息转义为有特殊意义的信息   (换行)   (制表)=tab

          操作系统正则符号说明第30张

           echo 打印输出一行内容,利用 的转义含义再对内容进行输出,此时内容还是一行显示,此时需要利用echo 的-e参数允许输出的内容进行转义,然后得到多行内容

         补充说明:系统中两种方法输入多行内容到文件中

           1  cat >> oldboy.txt << EOF

             >oldboy01

             >oldboy02

             >oldboy03

             >EOF

            2  echo -e "oldboy01 oldboy02 oldboy03">oldboy.txt

    008.中括号符  []  匹配括号中多个字符信息

     操作系统正则符号说明第31张

      对括号中多个字符进行匹配,在文件内容中从第一行往下进行匹配,首先发现中括号中o字符进行匹配.再往下又发现一个o在进行匹配,最后匹配到括号中e字符,所以对于括号中字符,grep 会一个一个全部匹配上

     扩展问题:找出文件中以特定字符开头的内容

      1.找出以 I 和 m 开头的行  ^[Im]     以I和m开头的行

      操作系统正则符号说明第32张

      2.找出selinux中除去注释行的全部内容  ^[a-Z]  以字母开头的内容 

      操作系统正则符号说明第33张

       查看selinux配置文件可以发现除去以#开头的注释行之外.其他行都是字母开头的当然这个文件只有一个字母S,由此我们可以利用一种正则符号^[a-Z] 在利用 grep 筛选.将以任意字母开头的文件都筛选出来

    009.排除符号  [^]  排除括号中多个字符信息 

      操作系统正则符号说明第34张

  05.扩展正则符号说明

    默认grep sed 不能直接识别

      grep提升自己  --- egrep/grep -E

      sed提升自己   --- sed -r

    001.加号符号  +  表示+前一个字符杂每行连续出现1次或多次以上

      操作系统正则符号说明第35张

       对比  *  的匹配原则不难发现,  +  匹配的  +  号前一个字符连续出现一次或多次以上行,  由上 0 连续出现一次的行唯有两行, 所以只列出此两行 ,   对于grep   来说  要想使用 扩展正则符号需要加  -E  参数或者领用  egrep 命令

      补充总结说明 : 一般 + 符号经常是与 [] 使用, 可以匹配出多个不同的连续字符

      操作系统正则符号说明第36张

       一般网站会出现身份证号及手机号的输入提示框,此时如果我们输入其他非数字的内容时,系统会报错,那如何对输入的内容进行判断筛选,就是利用[]+对输入的信息进行匹配查看

    002.竖线符号  |   并且符号,用于匹配多个信息

      操作系统正则符号说明第37张

    003.小括号符号 () 

      作用:

      1.指定信息进行整体匹配

      操作系统正则符号说明第38张

       对()中的内容进行整体匹配,  此间注意一点   grep 利用扩展正则符号进行匹配时, 需要加引号 将正则符号引起来,不然系统无法正确判断正则符号作用

      2.进行后项引用前项使用 :

        1 .多用于sed 命令中的替换作用(一次性创建多个用户--详见系统中如何批量创建用户并设置8位随机密码)

          echo oldboy{01..10}|xargs -n1|sed -r 's#(.*)#useradd 1#g'|bash          -- 创建用户

          seq -w 10|sed -r 's#(.*)#useradd oldboy1;echo 123456|passwd --stdin oldboy1#g'    -- 创建用户和密码

        2 .将输出的信息转换后输出 

          echo 123456 ==> 转换为 <123456>进行显示

          操作系统正则符号说明第39张

           利用sed的替换功能实现()的后项引用前项功能    ( )    1

          echo 123456 ==> 转换为 <12><34><56>进行显示

          操作系统正则符号说明第40张

          echo 123456 ==> 转换为 <12>34<56>进行显示

          操作系统正则符号说明第41张 

    004.花括号符号 {}  可以指定字符连续匹配的次数

     1.   x{n,m}  表示前一个字符至少连续出现n次,最多出现m次

     操作系统正则符号说明第42张

     1.   x{n}   表示前一个字符正好连续出现n次

     操作系统正则符号说明第43张

     1.   x{n,}     表示前一个字符至少连续出现n次,最多出现多少次不限

     操作系统正则符号说明第44张

      表示0连续次数n-∞  若 n大于文件中0连续出现的次数,则grep不会匹配任何内容,因为不满足条件

     1.   x{,m}    表示前一个字符至少连续出现0次,最多出现m次

     操作系统正则符号说明第45张

      表示0连续出现次0-n  依旧遵循最大匹配原则

    005.问号符号  ?  表示?前一个字符在每行连续出现0次或1次

      操作系统正则符号说明第46张

  06.正则符号使用问题

    正则符号练习:利用ip address show eth0只把IP地址信息显示出来?

    操作系统正则符号说明第47张

     操作系统正则符号说明第48张

     操作系统正则符号说明第49张

  07.正则符号特性说明

    让grep sed命令可以直接识别扩展正则
        [root@oldboyedu ~]# grep "o+" oldboy_test03.txt
        god
        good
        goood
        gooood

4.课程知识重点总结

  企业面试常见问题
      正则符号与通配符号区别
          通配符号
              作用说明:查找文件名称信息
              使用场景:命令行经常使用
         正则符号
              作用说明:查找文件内容信息
              使用场景:三剑客命令经常使用/各种语言经常使用
  学习方法总结说明
      正则符号学习与帮助方法
          利用手册信息
              man grep/sed/awk
              info grep/sed/awk(更加详细)
         利用官方资料
              http://www.gnu.org/software/grep/manual/

5.正则符号企业应用

免责声明:文章转载自《操作系统正则符号说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇资深设计师:如何做一款优秀的动作游戏mac设置maven的jdk版本下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

lua学习笔记10:lua简单的命令行

前面反复使用的命令行,好学喜欢命令行: 一 格公式 lua [options][script][args] 两 详细命令 -e 直接命令传递一个lua -l 加载文件 -i 进入交互模式 比例如。端子输入: lua -e "print(math.sin(12))" 版权声明:本文博主原创文章,博客,未经同意不得转载。...

MySQL下载安装、基本配置、问题处理

一 mysql介绍 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 mysql是什么???...

设计模式14---设计模式之命令模式(Command)(行为型)

1.场景模拟 请用软件模拟开机过程 按下启动按钮 然后电源供电 主板开始加电自检 BIOS依次寻找其他设备的BIOS并且让他们初始化自检 开始检测CPU,内存,光盘,硬盘,光驱,串口,并口,软驱即插即用设备 进入系统引导 上面的过程可以抽象为如下: 客户端只是想要发出命令或者请求,不关心请求的真正接受者是谁,也不关心具体如何实现,而且同一个请求的动作可以有...

我们是如何做好前端工程化和静态资源管理

随着互联网的发展,我们的业务也日益变得更加复杂且多样化起来,前端工程师也不再只是做简单的页面开发这么简单,我们需要面对的十分复杂的系统性问题,例如,业务愈来愈复杂,我们要如何清晰地梳理;团队人员愈来愈多,我们要如何更好地进行团队协作;功能愈来愈多,我们要如何保证页面的性能不至于下降,等等。所有的这些都可以归结为如何提升开发体验和性能问题。 提升开发体验...

常用的正则验证

1.搜索框至少输入2个字 regex: /^[0-9A-Za-zu4e00-u9fa5]{2,21}$/;2.要求非空,非负,非零的整数或者小数,如果是小数则要求小数点以后只能有两位regex:/^(0(?:[.](?:[1-9]d?|0[1-9]))|[1-9]d*(?:[.]d{1,2}|$))$/g; 3.同时验证手机和座机电话:regx: /(^1...

06 django视图层

视图层   视图就是一个函数,请求过来后要做什么事情都在这个函数里,也就是具体处理请求的功能。   熟练掌握两个视图层对象:请求对象(request)和响应对象(HttpResponse)。 HttpRequest对象 1 from django.shortcuts import render,redirect,HttpResponse 2 from...