BASH 内置的字符串处理功能
字符串切片:
${var:offset:number} #offset表示从哪个字符开始,number表示取几个字符
url=www.baidu.com
echo ${url:4:5} -> baidu
echo ${url:4} ->baidu.com
${var: -number} #表示从右往左取几个字符,注意” - “前面必须有空格
基于模式的取串:
${var#*word} #表示从左至右,删除到第一个被word匹配字符中间所有的字符串
url=www.baidu.com
echo ${url#*.} ->baidu.com
${var##*word} #表示从左至右,删除到最后一个被word匹配字符中间所有的字符串
url=www.baidu.com
echo ${url##*.} ->com
${var%word*} #表示自右往左,删除到第一个匹配word的字符串
path=’/etc/selinux/config’
echo ${path%/*} -> /etc/selinux #取路径名
${var%%word*} #表示自右往左,删除到最后一个匹配word的字符串
查找替换:
${var/pattern/substr} #表示将被pattern第一次匹配的字符替换为substr
url=www.baidu.com
echo ${url/www/mail} ->mail.baidu.com
${var//pattern/substr} #表示此行中所有被pattern匹配的字符都替换为subtr
url=www.baidu.com.cc
echo=${url//./_} ->www_baidu_com_cc
${var/#pattern/substr} #行首锚定,只匹配出现在行首的字符
${var/%pattern/substr} #行位锚定,只匹配出现在行尾的字符
字符删除:
${var/pattern} #删除第一次被pattern匹配的字符
${var//pattern} #删除整行所有被pattern匹配的字符
${var/#pattern} #删除行首被pattern匹配的字符
${var/%pattern} #删除行尾被pattern匹配的字符
BASH 内置的字符串处理功能
原文:http://blog.51cto.com/jying/2109306