• bash字符串操作


    字符串操作:

    字符串切片:${var:offset:length} 

            a="world"
            ${a:2:2}的结果是:rl
       
    取字符串的最后几个字符:${var: -length}
            注意:冒号之后有空格
           

    基于模式取子串: 

            ${var#*word}:其中word可以是指定的任意字符;自左而右,查找var变量所存储字符中,第一次出现的word,删除字符开头直至第一次wrod出现处之间的所有字符;
                # mypath='sysconfig/network-scripts/ifcfg-eth0'
                # echo ${mypath#*/}
                network-scripts/ifcfg-eth0
               
            ${var##*word}: 其中word可以是指定的任意字符;自左而右,查找var变量所存储字符中,最后一次出现的word,删除字符开头直至最后一次wrod出现处之间的所有字符;
                # mypath='/sysconfig/network-scripts/ifcfg-eth0'
                # echo ${mypath##*/}
                ifcfg-eth0

            ${var%word*}: 自右而左,删除第一次word出现处的字符开始直到尾部的所有字符;
            ${var%%word*}:自右而左,删除最后一次word出现处的字符开始直到尾部的所有字符;

            例子:url=http://www.magedu.com:80
                取端口:${url##*:}:删除最后一个冒号之前的所有字符,即取最后一个冒号后边的字符串
                取协议:${url%%:*}:自右而左,删除最后一个冒号之后的字符,即自右往左,取最后一个冒号前边的字符串

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

            ${var/#pattern/substi}:以行首锚定的方式将pattern匹配至var所表示的字串上,如果能匹配,则以substi替换之;
            ${var/%pattern/substi}:以行尾锚定的方式将pattern匹配至var所表示的字串上,如果能匹配,则以substi替换之;
                可使用?, *元字符;

    查找并删除:
            ${var/pattern}:删除pattern匹配到的第一次出现;
            ${var//pattern}: 删除pattern匹配到的所有出现;
            ${var/#pattern}
            ${var/%pattern}

    字符串大小写转换:
            ${var^^}:小写-->大写
            ${var,,}:大写-->小写

       小写转大写:echo "abc" | tr '[a-z]' '[A-Z]'

       大写转小写:echo "ABC" | tr '[A-Z]' '[a-z]'

        可以参考:http://blog.csdn.net/linwhwylb/article/details/5904584

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

            ${var:?err_info}:如果var为空或未设置,那么返回错误信息;否则,则返回var自身的值;

            ${var:+word}:如果var自身有正常数据,则返回word;
               
        trap命令:
            trap 'arg' SIGNAL
           
            例如:trap 'echo "quit"; exit 1' SIGNAL  #不会被脚本中的命令接收到,只会被脚本本身接收到

    以上是自己总结的,也可以参考:

    http://blog.csdn.net/horkychen/article/details/7676151

  • 相关阅读:
    AndroidStudio中提示:android.content.res.Resources NotFoundException: String resource ID 0x
    Android中使用Room(ORM关系映射框架)对sqllite数据库进行增删改查
    Android中怎样使用Navicat可视化查看sqllite的数据库(查看db文件)
    Android中怎样在工具类中获取Context对象
    AndroidStudio中提示:This project uses AndroidX dependencies, but the ‘android.useAndroidX‘ property is not enabled
    AndroidStudio中Attatch debugger to Android Ptocess时 Choose Process后OK是灰色的
    AndroidStudio中调试时提示waiting for debugger的奇葩解决
    Java中使用Gson解析泛型类型数据
    vscode怎么快速创建生成html模板
    IntelliJ IDEA + Tomcat ;On Upate Action 与 On Frame Deactivation
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/4924118.html
Copyright © 2020-2023  润新知