zoukankan      html  css  js  c++  java
  • shell变量字符串截取

    假设有变量

    url=http://www.baidu.com/index.html

    <1>#号截取----删除左边的字符,保留右边的字符

    [root@MiWiFi-R3-srv ~]# echo "${url#*//}"
    www.baidu.com/index.html

    <2>##号截取----删除左边的字符,保留右边的字符

    [root@MiWiFi-R3-srv ~]# echo "${url##*/}"
    index.html

    ---->#号截取和##号截取的区别:

    可以看到上面的变量值并不是只有1个单一的字符,如字母(w,i等等).#和##的区别就是在这里

    [root@MiWiFi-R3-srv ~]# url=http://www.baidu.com/index.html
    [root@MiWiFi-R3-srv ~]# echo "${url#*i}"
    du.com/index.html
    [root@MiWiFi-R3-srv ~]# echo "${url##*i}"
    ndex.html

    "#"是从找到的第一个对象开始截取(从左往右数)

    "##"是从找到的最后一个对象开始截取(从左往右数)

    <3>%号截取----删除右边的字符,保留左边的字符

    [root@MiWiFi-R3-srv ~]# echo "${url%i*}"
    http://www.baidu.com/

    <4>%%号截取----删除右边的字符,保留左边的字符

    [root@MiWiFi-R3-srv ~]# echo "${url%%i*}"
    http://www.ba

    ---->注意:

    注意运算符"*"的位置

    注意"%"也是从找到的第一个对象开始截取。但是顺序是从右向左查找的

    注意"%%"也是从找到的最后一个对象开始截取。但是顺序从右向左查找的

    <5>从左边第几个字符开始,及字符的个数

    [root@MiWiFi-R3-srv ~]# echo "${url:0:2}"
    ht

    ---->0表示的是开始位置,逻辑相当于Python的列表索引

    [root@MiWiFi-R3-srv ~]# echo "${url:2}"
    tp://www.baidu.com/index.html

    从索引位置到结尾

    <6>从右边的第几个字符开始,及字符的个数

    [root@MiWiFi-R3-srv ~]# echo "${url:0-4:4}"
    html

    ---->"0-4"表示从右向左第四个字符开始,"4"表示字符的个数(从左到右的)

    [root@MiWiFi-R3-srv ~]# echo "${url:0-7}"
    ex.html

    ---->从"0-7"的位置到结尾

  • 相关阅读:
    neo4j命令
    prometheus使用四(alertmanager&grafana告警及服务发现)
    prometheus使用三(自定义监控指标实现)
    prometheus使用二(export与grafana接入)
    prometheus使用一
    一次修改域名解析引发的问题
    微信小程序支付,看这一篇就够了
    常用命令
    常见报错与问题注意
    redis迁移复制数据,主从关系建立实践
  • 原文地址:https://www.cnblogs.com/thebear/p/7755524.html
Copyright © 2011-2022 走看看