• Linux基础系列:常用命令(7)_正则表达式


    一、环境边量

    每个用户登录shell需要执行的四个文件

      /etc/profile

      /home/egon/.bashrc_profile

      /home/egon/.bashrc

      /etc/bashrc

    非登录shell加载的文件

      /home/egon/.bashrc

      /etc/bashrc

    要固化一个配置时在哪种登录下生效,就显而易见的知道该写在哪个文件里了

    通常,我们会将环境变量设置在 /home/egon/.bashrc

    如果不管哪种登录都想使用的变量就设置在/etc/bashrc

    添加语句:(以python3为例)

      PATH=/usr/local/python3:$PATH

      export PATH

     

    二、bash中元字符:

          bash中的特殊字符,键盘上能敲出来的特殊字符都有其特殊意义

          元字符是被shell解释的

    `` 命令替换取命令的执行结果

          res=`ls`                      #取命令的运行结果,赋值给变量res

    $()``但它弥补了``的嵌套缺陷

           res=$(echo $(ls))         #替代方案

    ~ 家目录

    ! 取非/匹配最近一次历史命令

    ! ls 带空格将命令的返回值取反

          [root@~]# ! echo ok #将结果取反

          ok

          [root@ ~]# echo $?

          1

    @ 无特殊含义

    # 注释

    $ 变量取值

    $() ``

    ${} 变量名的范围

    $[] 整数计算    

    & 后台执行;&& 逻辑与     

    * 匹配任意长度字符串;计算乘法

    () 在子进程中执行 

    "" 软引 ''硬引

    ; 可以接多个命令   

    : 空命令真值   

    | 管道; || 逻辑或

    转义;

    {} 命令列表,注意括号内的开头和结尾必须是空格{    ls; cd /;   }

    [] 字符通配,匹配括号内之一;    

         

    三、正则表达式

    正则:用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。

            或者说:正则就是用来描述一类事物的规则。

    linux中,通配符是由shell解释的,而正则表达式则是由命令解释的 

     

    四、文本处理工具/命令:grep

    1、参数

          -n  :显示行号

          -o  :只显示匹配的内容

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

          -l  :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

          -A  :如果匹配成功,则将匹配行及其后n行一起打印出来

          -B  :如果匹配成功,则将匹配行及其前n行一起打印出来

          -C  :如果匹配成功,则将匹配行及其前后n行一起打印出来

          --color

          -c  :如果匹配成功,则将匹配到的行数打印出来

          -E  :等于egrep,扩展

          -i  :忽略大小写

          -v  :取反,不匹配

          -w:匹配单词

          -r  递归查询

    2grep种类

          grep

          fgrep

          pgrep

          egrep

          常用grepegrep

    3、正则介绍

          ^    行首

          $    行尾

          .     除了换行符以外的任意单个字符

          *    前导字符的零个或多个

          .*   所有字符

          []   字符组内的任一字符

          [^] 对字符组内的每个字符取反(不匹配字符组内的每个字符)

          ^[^]     非字符组内的字符开头的行

          [a-z] 小写字母

          [A-Z] 大写字母

          [a-Z] 小写和大写字母

          [0-9] 数字

          <  单词头单词一般以空格或特殊字符做分隔,连续的字符串被当做单词

          >  单词尾

      | 

          grep -E egrep 或转义

          ? 前导字符零个或一个

          + 前导字符一个或多个

          x{m} x出现m

          x{m,} x出现m次至多次(至少m)

          x{m,n} x出现m次至n

       

      

       

       

     

    作业:grep作业(正则表达式及字符处理)

    目标文件/etc/passwd,使用grep命令或egrep

    1.显示出所有含有root的行:

    命令:grep ‘root’ /etc/passwd  

      

    2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:

    命令:grep –C2 ‘bash’ /etc/passwd

       

    3.  显示出有多少行含有nologin

    命令:grep –c ‘nologin’ /etc/passwd

       

    4.显示出那些行含有root,并将行号一块输出。

    命令:grep –n ‘root’ /etc/passwd

       

    5.新建用户abominableabominateanomieatomize

                编写正则表达式,将他们匹配出来

    命令:useradd abominable

                useradd abominate

                useradd anomie

                useradd atomize

    正则表达式:grep –o ‘a.omi.*e’ /etc/passwd

        

     

     6.建四个用户Alex213sbWpq2222byH438PIGegon666egon

                过滤出用户名组成是字母+数字+字母的行

    命令:useradd Alex213sb

                useradd Wpq2222b

                useradd yH438PIG

                useradd egon666

                useradd egon

    正则表达式:egrep –n ‘^[a-Z]+[0-9]+[a-Z]+’ /etc/passwd

       

    7.显示出/etc目录下所有包含root的文件名

    命令: grep –rl ‘root’ /etc/

       

    8. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行

    命令:grep -v '^#' /etc/ssh/sshd_config |grep -v '^  *$'

       

     

     

     

     

  • 相关阅读:
    .NET CORE 技术债
    .Net Core/Framework之Nginx反向代理后获取客户端IP等数据探索
    托管ASP.NET Core应用程序到Windows服务中
    Office在线预览及PDF在线预览的实现方式大集合
    Ubuntu 16.10 虚拟机安装记录
    .Net Core 之 图形验证码
    Ubuntu之Mysql安装及基本设置
    .Net Core 之 Ubuntu 14.04 部署过程
    常用.net反编译替换正则表达式
    江湖救急:webbrowser中js文件丢失问题~
  • 原文地址:https://www.cnblogs.com/hedeyong/p/6933945.html
Copyright © 2020-2023  润新知