• 正则表达式


    一、概念

    1.定义:正则表达式是一种基础的模式匹配(pattern-matching)技术。

    2.模式:将内部数据在结构上抽象为字符串;

        模式指的就是数据结构

    3.匹配: List(“A”,”B”,”C”) match{ case List(“A”,_,”C”)  ——> println(“ok”) } ;

        匹配指的就是链表匹配

    4.可视化:https://regexper.com/

        这个网站可以将正则表达式变成图形可视化,超强辅助理解!

    二、技巧

    1.$(( ))、$( )、` `的区别

      (1) $(( )) 中的变量名称,可用于其前面加 $ 符号来替换,也可以不加$

    [root@localhost tmp]# a=1; b=2; c=4
    [root@localhost tmp]# echo $((a+b*c))
    9
    [root@localhost tmp]# echo $(($a+$b*$c))
    9

      (2) $( )与` `都是用来作命令替换的:先完成里面的命令行,然后将其结果替换出来,再重组成新的命令行。

    [root@localhost tmp]# echo today is $(date "+%Y-%m-%d")
    today is 2020-04-11
    [root@localhost tmp]# echo today is `date "+%Y-%m-%d"`
    today is 2020-04-11

      (3)说明:

        1.在多层次的复合替换中,` `必须要额外的跳脱处理(反斜线):转义=跳脱=escape,如转义字符—Escape character—ESC

        2.并不是所有的类unix系统都支持$( ),但反引号` `是肯定支持的。

    2.[[ $i =~ ^[0-9]+$ ]] && echo 1 什么意思?

      =~ 表示的是匹配

      && 是短路与,前者若为假则不执行后者

      [[ ]] 是if判断使用正则表达式的固定格式

      ^ 是开头,$ 是结尾

      [0-9] 是1个范围内的数字

      + 是匹配前面1到n个

      ^[0-9]+$ 就是:以数字开头并结尾的,整行都是数字。

      整句的意思是:如果变量$i 匹配到了以1到多个数字开头并结尾的,那么就 echo 1

     

    3.[^ ]*和[0-9.]*

    [root@localhost linux_shell]# ifconfig ens33 | egrep -o "inet [^ ]*" | grep -o "[0-9.]*"
    10.0.0.100
    [root@localhost linux_shell]# ifconfig ens33 | egrep -o "netmask [^ ]*" | grep -o "[0-9.]*"
    255.255.255.0

      [^ ]*表示非空格字符序列  注意^单独地在中括号里面表示“非”,如果在外面则有可能表示“开头”

      [0-9.]*表示点分数字序列  匹配[ ]内数字和点符号中的任意单一字符,*表示匹配多次,可以表示点分数显的IP地址。

  • 相关阅读:
    Kubernetes基础:Pod的详细介绍
    十分钟带你理解Kubernetes核心概念
    kubectl命令行工具用法详解
    GDPR给安全的影响
    开源软件会被云杀死吗 ?
    VMware前路难测,多个厂家群雄逐鹿
    如何实现linux+windows双系统启动
    IT行业——Linux
    i3 窗口管理器使 Linux 更美好
    在 Linux 中使用超级用户权限
  • 原文地址:https://www.cnblogs.com/ytdyz/p/12670948.html
Copyright © 2020-2023  润新知