linux中shell截取字符串方法总结

常用9种使用方法

# 缺省值的替换
${parameter:-word} # 为空替换
${parameter:=word} # 为空替换,并将值赋给$parameter变量
${parameter:?word} # 为空报错
${parameter:+word} # 不为空替换
 
${#parameter}      # 获得字符串的长度
 
# 截取字符串,有了着四种用法就不必使用cut命令来截取字符串了。
# 在shell里面使用外部命令会降低shell的执行效率。特别是在循环的时候。
 
${parameter%word}  # 最小限度从后面截取word
${parameter%%word} # 最大限度从后面截取word
${parameter#word}  # 最小限度从前面截取word
${parameter##word} # 最大限度从前面截取word

例子

  1. 使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。

    str='http://www.liudon.org/123.html'
    echo ${str#*//} # 输出 www.liudon.org/123.html
  2. 使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。

    str='http://www.liudon.org/123.html'
    echo ${str##*/} # 输出 123.html
  3. 使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。

    str='http://www.liudon.org/123.html'
    echo ${str%/*} # 输出 http://www.liudon.org
  4. 使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。

    str='http://www.liudon.org/123.html'
    echo ${str%%/*} # 输出 http:
  5. 从左边第几个字符开始以及字符的个数,用法为:start:len。

    str='http://www.liudon.org/123.html'
    echo ${str:0:5} # 输出 http:
  6. 从左边第几个字符开始一直到结束,用法为:start。

    str='http://www.liudon.org/123.html'
    echo ${str:7} # 输出 www.liudon.org/123.html
  7. 从右边第几个字符开始以及字符的个数,用法:0-start:len。

    str='http://www.liudon.org/123.html'
    echo ${str:0-23:14} # 输出 www.liudon.org
  8. 从右边第几个字符开始一直到结束,用法:0-start。

    str='http://www.liudon.org/123.html'
    echo ${str:0-23} # 输出 www.liudon.org/123.html

参考资料:
http://w.gdu.me/wiki/shell/ShellParameterExpansion.html
http://www.111cn.net/sys/linux/43822.htm

标签: shell

添加新评论