• Linux expr相关


    expr命令可以实现数值运算、数值或字符串比较、字符串匹配、字符串提取、字符串长度计算等功能。它还具有几个特殊功能,判断变量或参数是否为整数、是否为空、是否为0等。

    1.'expr'支持模式匹配和字符串操作。

    'STRING : REGEX'

    执行模式匹配。两端参数会转换为字符格式,且第二个参数被视为正则表达式(GNU基本正则),它默认会隐含前缀"^"。随后将第一个参数和正则模式做匹配。

    如果匹配成功,且REGEX使用了'('和')',则此表达式返回匹配到的,如果未使用'('和')',则返回匹配的字符数。

    如果匹配失败,如果REGEX中使用了'('和')',则此表达式返回空字符串,否则返回为0

    在正则表达式中,'+','?'和'|'分表代表匹配一个或多个,0个或1个以及两端任选其一的意思

    'match STRING REGEX'等价于'STRING : REGEX'

    expr命令  .*意即任何字符重复0次或多次
    例子:  expr abcd : 'a(.*)d'   --->bc
                expr abcd : 'a(.)d'   --->没有输出
                expr abd : 'a(.*)d'   --->b
                expr abd : 'a(.)d'   --->b

    2.字符串提取

    'substr STRING POSITION LENGTH'

    返回STRING字符串中从POSITION开始,长度最大为LENGTH的子串。如果POSITION或LENGTH为负数,0或非数值,则返回空字符串

    3.字符串位置

    'index STRING CHARSET'
        
    CHARSET中任意单个字符在STRING中最前面的字符位置。如果在STRING中完全不存在CHARSET中的字符,则返回0

    4.字符串长度

    'length STRING'
     
        返回STRING的字符长度

    5.将TOKEN解析为普通字符串

    '+ TOKEN'
         将TOKEN解析为普通字符串,即使TOKEN是像MATCH或操作符"/"一样的关键字。这使得'expr length + "$x"'或'expr + "$x" : '.*/(.)''可以正常被测试,即使"$x"的值可能是'/'或'index'关键字。这个操作符是一个GUN扩展。
         通用可移植版的应该使用'" $token" : ' (.*)''来代替'+ "$token"'

    要让expr将关键字解析为普通的字符,必须使用引号包围

    6.算术表达式

    'expr'支持普通的算术操作,算术表达式优先级低于字符串表达式,高于逻辑关系表达式。

    '+ -'   加减运算。两端参数会转换为整数,如果转换失败则报错。

    '* / %'     乘,除,取模运算。两端参数会转换为整数,如果转换失败则报错。

    7.逻辑关系表达式

    'expr'支持普通的逻辑连接和逻辑关系。它的优先级最低。
    '|'     如果第一个参数非空且非0,则返回第一个参数的值,否则返回第二个参数的值,但要求第二个参数的值也是非空或非0,否则返回0。如果第一个参数是非空或非0时,不会计算第二个参数。    
         经过测试,以上手册内容是错误的。正确的应该是:如果第一个参数非0,则返回第一个参数的值,否则返回第二个参数。但如果任意一个参数为空,则报错。除非空字符串使用引号包围,此时将和0的处理方式一样。
    '&'     如果两个参数都非空且非0,则返回第一个参数,否则返回0。如果第一个参为0或为空,则不会计算第二个参数。    
         经过测试,以上手册内容是错误的。正确的应该是:如果两个参数都非0,则返回第一个参数,否则返回0。但任意一个参数为空,则报错。除非空字符串使用引号包围,此时将和0的处理方式一样。
    '< <= = == != >= >'     比较两端的参数,如果为true,则返回1,否则返回0。"=="是"="的同义词。"expr"首先尝试将两端参数转换为整数,并做算术比较,如果转换失败,则按字符集排序规则做字符比较。
    括号'()'可以改变优先级,但使用时需要使用反斜线对括号进行转义

    具体参考博客:https://www.cnblogs.com/f-ck-need-u/p/7231832.html

  • 相关阅读:
    python random模块随机取list中的某个值
    初学习-python打印乘法表、正方形、三角形
    python字符串拼接相关
    导航条2-
    HTML输入验证提示信息
    CMD常用功能
    AngularJs学习笔记(4)——自定义指令
    AngularJs学习笔记(3)——scope
    AngularJs学习笔记(2)——ng-include
    AngularJs学习笔记(1)——ng-app
  • 原文地址:https://www.cnblogs.com/rookie-ray/p/11162272.html
Copyright © 2020-2023  润新知