• 操作系统正则符号说明


    1.系统特殊符号回顾

      01.基础符号系列

        001.美元符号  $

          作用:

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

          

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

          

          3.表示用户命令提示符

          

           4.表示一行的结尾

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

        002.叹号符号  !

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

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

          

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

        003.竖线符号  |

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

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

        004.井号符号  #

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

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

      02.引号符号系列

        001.单引号  ''    

        输出信息所见即所得

        

        002.双引号  ""    

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

        

        003.没有引号

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

        

        004.反引号  ``

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

        

        005.美元括号  $()

        等价于反引号  

      03.定向符号系列

        1.小于符号

          <  标准输入重定向

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

          <<   标准输入追加重定向

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

            

        2.大于符号

          >=1>  标准输出重定向

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

          2>  错误输出重定向

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

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

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

          

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

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

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

          

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

          

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

          

      04.路径信息系列

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

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

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

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

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

        

      05.逻辑符号系列

        001.与符号  &&

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

        

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

        002.或符号  ||

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

        

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

        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}用来衍生出另一个常用功能

            

            如何实现快速备份文件

              cp oldboy/alex.txt{,.bak}

              

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

              mv oldboy/alex.txt{.bak,}

              

    3.系统正则符号介绍

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

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

      02.正则表达符号分类

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

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

      03.正则符号注意事项

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

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

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

      04.基础正则符号说明

        

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

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

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

          

        

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

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

        

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

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

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

        

        

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

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

        

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

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

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

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

        

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

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

        

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

        007.转义符号    

          作用:

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

              

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

              

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

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

               1  cat >> oldboy.txt << EOF

                 >oldboy01

                 >oldboy02

                 >oldboy03

                 >EOF

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

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

         

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

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

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

          

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

          

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

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

          

      05.扩展正则符号说明

        默认grep sed 不能直接识别

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

          sed提升自己   --- sed -r

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

          

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

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

          

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

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

          

        003.小括号符号 () 

          作用:

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

          

           对()中的内容进行整体匹配,  此间注意一点   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>进行显示

              

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

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

              

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

               

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

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

         

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

         

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

         

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

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

         

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

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

          

      06.正则符号使用问题

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

        

         

         

      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.正则符号企业应用

  • 相关阅读:
    将博客搬至CSDN
    操作excel文件爬取nvd.nist数据
    windows下如何制作和应用数字签名证书 全流程
    python虚拟环境
    Linux系统中python默认版本为python2.7,修改为python3 项目上传码云
    删除github中某个文件夹
    国外的一些测试技术网站
    PYTHON读取EXCEL内容再转变成HTML添加到OUTLOOK中
    数据结构之顺序表概念篇
    Python内置类型性能分析
  • 原文地址:https://www.cnblogs.com/zp751060301/p/12858747.html
Copyright © 2020-2023  润新知