zoukankan      html  css  js  c++  java
  • Linux Shell 截取字符串

    shell中截取字符串的方法很多

    复制代码
    ${var#*/}
    ${var##*/}
    ${var%/*}
    ${var%%/*}
    ${var:start:len}
    ${var:start}
    ${var:0-start:len}
    ${var:0-start}
    复制代码

    下面用几个例子展示一下:

    1) 获得字符串的长度

    语法:

    ${#var}

    示例代码:

    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    length=${#str}
    echo "length : [${length}]"

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    length : [61]

    2) 使用 # 和 ## 获取尾部子字符串

    2.1) # 最小限度从前面截取word

    语法:

    ${parameter#word}  

    示例代码:

    复制代码
    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    #分割符为'/'
    substr=${str#*/}
    echo "substr : [${substr}]"
    复制代码

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [/www.fengbohello.xin3e.com/blog/shell-truncating-string]

    2.2) ## 最大限度从前面截取word

    语法:

    ${parameter##word}

    示例代码:

    复制代码
    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    #分割符为'/'
    substr=${str##*/}
    echo "substr : [${substr}]"
    复制代码

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [shell-truncating-string]

    3) 使用 % 和 %% 获取头部子字符串

    3.1) % 最小限度从后面截取word

    语法:

    ${parameter%word} 

    示例代码:

    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    substr=${str%/*}
    echo "substr : [${substr}]"

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [http://www.fengbohello.xin3e.com/blog]

    3.2) %% 最大限度从后面截取word

    语法:

    ${parameter%%word}

    示例代码:

    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    substr=${str%%/*}
    echo "substr : [${substr}]"

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [http:]

    4)使用 ${var:} 模式获取子字符串

    4.1) 指定从左边第几个字符开始以及子串中字符的个数

    语法:

    ${var:start:len}

    示例代码:

    复制代码
    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    #其中的 0 表示左边第一个字符开始,7 表示子字符的总个数。
    substr=${str:0:7}
    echo "substr : [${substr}]"
    复制代码

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [http://]

    4.2) 从左边第几个字符开始一直到结束

    语法:

    ${var:7}

    示例代码:

    复制代码
    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    #其中的 7 表示左边第8个字符开始
    substr=${str:7}
    echo "substr : [${substr}]"
    复制代码

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [www.fengbohello.xin3e.com/blog/shell-truncating-string]

    4.3) 从右边第几个字符开始以及字符的个数

    语法:

    ${var:0-start:len}

    示例代码:

    复制代码
    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    #其中的 0-23 表示右边算起第23个字符开始,5 表示字符的个数
    substr=${str:0-23:5}
    echo "substr : [${substr}]"
    复制代码

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [shell]

    4.4) 从右边第几个字符开始一直到结束

    语法:

    ${var:0-start}

    示例代码:

    复制代码
    str="http://www.fengbohello.xin3e.com/blog/shell-truncating-string"
    echo "string : [${str}]"
    
    #其中的 0-6 表示右边算起第6个字符开始
    substr=${str:0-6}
    echo "substr : [${substr}]"
    复制代码

    执行结果:

    string : [http://www.fengbohello.xin3e.com/blog/shell-truncating-string]
    substr : [string]
  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/kakaisgood/p/11375570.html
Copyright © 2011-2022 走看看