• shell编程1


    shell编程1

    一、shell基础正则表达式

      1.正则表达式和通配符

        正则表达式是用来在文件中匹配符合条件的字符串,正则式包含匹配。(grep awk sed)

        通配符是用来匹配符合条件的文件名,通配符是完全匹配。(* [] ? )通配符可以在正则表达式中使用但是正则表达式不能再shell命令中使用。

      2.基础正则表达式

      

      grep参数:

      -n  :显示行号
      -o  :只显示匹配的内容
      -q  :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容

      -l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc 
      -A  :如果匹配成功,则将匹配行及其后n行一起打印出来
      -B  :如果匹配成功,则将匹配行及其前n行一起打印出来
      -C  :如果匹配成功,则将匹配行及其前后n行一起打印出来
      --color
      -c  :如果匹配成功,则将匹配到的行数打印出来
      -E  :等于egrep,扩展
      -i  :忽略大小写

      -v  :取反,不匹配
      -w:匹配单词

      eg:grep  "a*" /ect/passwd(匹配所有内容,包括空行)      grep "aa*" /etc/passwd (匹配至少包含一个a的行)

        grep "x.n" /etc/passwd(匹配x和n之间的任意一个字符)  grep “x.*n” (匹配x和n之间任意多个字符)

        grep “.*”  /etc/passwd (匹配所有字符和shell通配符中的*一样)      grep -n “^$" /etc/passwd (匹配空白行)        

        grep ".$" /etc/passwd(匹配以.结尾的行)

    二、cut字符截取命令

      1.字符提取命令,默认识别已tab键作为分隔符。

      2.cut [选项] 文件名 

          -f 行号 :提取第几行

          -d 分隔符  :以指定分隔符分割列

    三、printf命令

      1.printf命令详解

      2.printf和print命令

      

    四、awk命令

      1、命令格式

    eg:

     

     

    五、sed命令

      sed [选项]  '[动作]'  文件名

      选项:

          -n  只把经过sed命令处理的行输出到屏幕上,默认是全部输出。

          -e  允许对输出数据应用多条sed命令编辑,多条命令之间用;分割开。

          -i 用sed命令直接修改文件的结果,而不是屏幕输出。

       动作:

         na   追加,在当前行后添加一行或多行,添加多行时每行末尾需要用进行隔开代表数据未完结,最后一行末尾不用添加。(注:n为行号)

           ni    插入,在当前行前插入一行或多行数据,与na 类似。

         nc   行替换,用c后面的字符串替换原数据行,替换多行时除最后一行外,每行末尾都需要用代表数据没完结

         ns  字符替换,用一个字符替换另一个字符,格式为ns/旧字符/新字符/g

         nd   删除指定的行

                  np   打印,输出指定的行

       补充:

      egrep:
      egrep = grep -E 可以使用基本的正则表达外, 还可以用扩展表达式. 注意区别.
      扩展表达式:
      + 匹配一个或者多个先前的字符, 至少一个先前字符.
      ? 匹配0个或者多个先前字符.
      a|b|c 匹配a或b或c
      () 字符组, 如: love(able|ers) 匹配loveable或lovers.
      (..)(..)12 模板匹配. 1代表前面第一个模板, 2代第二个括弧里面的模板.
      x{m,n} =x{m,n} x的字符数量在m到n个之间.
      egrep '^+' file   以一个或者多个空格开头的行.
      grep '^*' file   同上
      egrep '(TOM|DAN) SAVAGE' file 包含 TOM SAVAGE 和DAN SAVAGE的行.
      egrep '(ab)+' file 包含至少一个ab的行.
      egrep 'x[0-9]?' file 包含x或者x后面跟着0个或者多个数字的行.
      egrep 'fun.$' * 所有文件里面以fun.结尾的行.
      egrep '[A-Z]+' file 至少包含一个大写字母的行.
      egrep '[0-9]' file 至少一个数字的行.
      egrep '[A-Z]...[0-9]' file 有五个字符, 第一个式大写, 最后一个是数字的行.
      egrep '[tT]est' file 包含单词test或Test的行.
      egrep 'ken sun' file 包含ken sun的行.
      egrep -v 'marry' file 不包含marry的行.
      egrep -i 'sam' file 不考虑sam的大小写,含有sam的行.
      egrep -l "dear ken" * 包含dear ken的所有文件的清单.
      egrep -n tom file 包含tom的行, 每行前面追加行号.
      egrep -s "$name" file 找到变量名$name的, 不打印而是显示退出状态. 0表示找到. 1表示表达式没找到符合要求的, 2表示文件没找到.

      sort命令

        sort [选项]  文件名

        选项  -f 忽略大小写

            -n 以数值型进行排序,默认是字符串型

            -r 反向排序

            -t 指定分隔符

            -k n[,m]  以指定的分隔符字段进行排序,从第n段到第m段排序 默认是到结尾

      eg:sort -n -t":" -kn,m /etc/passwd

            

  • 相关阅读:
    php判断值是否为空
    MyQQ
    java动态定义二维数组问题
    回归CSDN
    字体工具栏
    传说中的服务器
    sql server 2000 出现不能执行查询,因为一些文件丢失或未注册
    chm文件打不开
    Cmd不能运行,窗口闪一下就消失
    isql病毒
  • 原文地址:https://www.cnblogs.com/xuanan/p/6925811.html
Copyright © 2020-2023  润新知