• shell编程(七)之字符串处理


    字符串切片

    ${var:offset:number}

    取字符串的最右侧几个字符:

    ${var: -length} 注意: 冒号后必须有一个空白字符
    #!/bin/bash
    var="chengkaihua"
    echo $var
    # 显示字符串右侧偏移两个字符取三个字符
    echo ${var:2:3} # eng
    echo ${var: -3} # hua

    基于模式取子串:
    ${var#*word}: 其中word可以是指定的任意字符;功能:自左向右,查找var变量所存储的字符串中第一次出现的word,

    删除字符串开头至第一次出现word字符之间的所有字符
    ${var##*word}:同上,不过删除的是字符串开头至最后一次由word指定的字符之间的所有内容

    ${var%word*}:其中word可以是指定的任意字符,功能:自右向左,查找var变量所存储的字符串中第一次出现的word,
    删除字符串最后一个字符向左至第一次出现word字符之间的所有字符
    ${var%%word*}:同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符

    示例: url=http://www.magedu.com:80
    ${url##*:}
    ${url%%:*}

    查找替换:
    ${var/pattern/substi}: 查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substi替换之
    ${var//pattern/substi}: 查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substi替换之

    查找并删除:
    ${var/pattern}: 查找var所表示的字符串中,删除第一次被pattern所匹配到的字符串
    ${var//pattern}:
    ${/var/#pattern}:
    ${var/%pattern}:

    字符大小写转换:
    ${var^^}: 把var中的所有小写字母转换为大写
    ${var,,}: 把var中的所有大写字母转换为小写

    变量赋值:
    ${var:-value}: 如果var为空或未设置,那么返回value;否则,则返回var的值
    ${var:=value}: 如果var为空或未设置,那么返回value,并将value赋值给var;否则,则返回var的值

    ${var:+value}: 如果var不空,则返回value
    ${var:?error_info}: 如果var为空或未设置,那就返回error_info;否则,则返回var的值

        #!/bin/bash
                        var="chengkaihua"
                        echo $var
                        # 显示字符串右侧偏移两个字符取三个字符
                        echo ${var:2:3} # eng
                        echo ${var: -3} # hua
                        echo ${var#*a}  # ihua
                        echo ${var##*a} # 
                        echo ${var%a*}  # chengkaihu
                        echo ${var%%a*} # chengk
    
                        echo ${var^^}   # 小写字母转换为大写
                        echo ${var,,}   # 大写字母转换为小写
    
                        echo ${name:-alen} # alen
                        echo $name      # 
                        echo ${name:=alen} # alen
                        echo $name      # alen
    
                        echo ${name1:?"name1为空或未设置"}
  • 相关阅读:
    Android 布局中设置分割线
    程序员的创意爱情告白大法
    java中路径/和\的区别
    Oracle解锁表
    Android组件TextView细节
    android this,getApplication(),getApplicationContext()的区别
    ORA01013: user requested cancel of current operation
    Android自定义View之一:初探实例
    使用开源jabber(XMPP)协议及openfire架设内部即时通讯服务
    九、为ASP.NET MVC应用程序创建单元测试
  • 原文地址:https://www.cnblogs.com/ckh2014/p/10765322.html
Copyright © 2020-2023  润新知