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.将没有意义的信息转义为有特殊意义的信息  \n(换行)  \t(制表)=tab

          

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

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

           1  cat >> oldboy.txt << EOF

             >oldboy01

             >oldboy02

             >oldboy03

             >EOF

            2  echo -e "oldboy01\noldboy02\noldboy03">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 oldboy\1;echo 123456|passwd --stdin oldboy\1#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.正则符号企业应用