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
例子
使用 # 号操作符。用途是从左边开始删除第一次出现子字符串即其左边字符,保留右边字符。
str='http://www.liudon.org/123.html' echo ${str#*//} # 输出 www.liudon.org/123.html
使用 ## 号操作符。用途是从左边开始删除最后一次出现子字符串即其左边字符,保留右边字符。
str='http://www.liudon.org/123.html' echo ${str##*/} # 输出 123.html
使用 % 号操作符。用途是从右边开始删除第一次出现子字符串即其右边字符,保留左边字符。
str='http://www.liudon.org/123.html' echo ${str%/*} # 输出 http://www.liudon.org
使用 %% 号操作符。用途是从右边开始删除最后一次出现子字符串即其右边字符,保留左边字符。
str='http://www.liudon.org/123.html' echo ${str%%/*} # 输出 http:
从左边第几个字符开始以及字符的个数,用法为:start:len。
str='http://www.liudon.org/123.html' echo ${str:0:5} # 输出 http:
从左边第几个字符开始一直到结束,用法为:start。
str='http://www.liudon.org/123.html' echo ${str:7} # 输出 www.liudon.org/123.html
从右边第几个字符开始以及字符的个数,用法:0-start:len。
str='http://www.liudon.org/123.html' echo ${str:0-23:14} # 输出 www.liudon.org
从右边第几个字符开始一直到结束,用法: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