使用linux 自带的bash实现变量的子串替换
以下内容可以通过man bash 来查找相关帮助信息
符号 | 含义 |
---|---|
${#parameter} | 返回字符串的长度 |
${parameter:offset} | 在$parameter中,从位置offset之后提取字符串 |
${parameter:offset:length} | $parameter中,从位置offset之后提取长度为length的字符串 |
${parameter#word} | 在$parameter中开头删除最短匹配word的字符串 |
${parameter##word} | 在$parameter中开头删除最长匹配word的字符串 |
${parameter%word} | 在$parameter中结尾删除最短匹配word的字符串 |
${parameter%%word} | 在$parameter中结尾删除最长匹配word的字符串 |
${parameter/pattern/string} | 把$parameter中的pattern字符串替换为string字符串 |
${parameter/#pattern/string} | 把$parameter中从前面开始匹配的pattern字符串替换为string字符串 |
${parameter/#pattern/string} | 把$parameter中从后面开始匹配的pattern字符串替换为string字符串 |
${variable:0-n1:n2} | 截取变量variable从右边起第n1个字符开始的n2个字符。 |
${variable:0-n1} | 截取变量variable从右边起第n1个字符开始的所有字符。 |
符号 | 含义 |
---|---|
${var} | 变量,界定范围 |
${var:-word} | 如果var为空或者未设定,返回word,var不变 |
${var:=word} | 如果var为空或者未设定,返回word,且var=word |
${var:+word} | 如果var有值,返回word,var不变 |
${var:?word} | 如果变量var为空或者未设定,返回word并退出shell,word没有值则输出:parameter null or not set,用于检测var是否被正常赋值 |
${var-word} | 如果var未设定,返回word,如果var未空或者有值,返回var。(httpd的启动文件中有这种用法) |
${var:num} | 返回var中第num个字符到末尾的所有字符,正从左往右,负从右往左,有空格:${var: -2},没有空格:${var:1-3}或${var:(-2)} |
${var:num1:num2} | 从var的第num1个位置开始,提取长度为num2的子串。num1是位置,num2是长度 |
${var/word1/word2} | 将var中第一个匹配到的word1替换为word2 |
${var//word1/word2} | 将var中所有word1替换为word2 |
例子:
第一种:
${parameter%word} 最小限度从后面截掉word
${parameter%%word} 最大限度从后面截掉word
${parameter#word} 最小限度从前面截掉word
${parameter##word} 最大限度从前面截掉word
word可以是一个具体的字符串,也可以是一个模式字符串。
例子:
str=‘http://www.你的域名.com/cut-string.html’
echo ${str%/*}
结果:http://www.你的域名.com
echo ${str%%/*}
结果:http:
echo ${str#*//}
结果:www.你的域名.com/cut-string.html
echo ${str##*/}
结果:cut-string.html
第二种:
${variable:n1:n2}:截取变量variable从左边起索引n1开始的n2个字符。n1表示索引,索引从0开始;n2表示截取的字符个数。
变种如下:
${variable:n1}:截取变量variable从左边起索引n1开始的所有字符。
${variable:0-n1:n2}:截取变量variable从右边起第n1个字符开始的n2个字符。
${variable:0-n1}:截取变量variable从右边起第n1个字符开始的所有字符。
例子:
variable=‘http://www.你的域名.com/cut-string.html’
echo ${variable:0:4}
结果:http
echo ${variable:7}
结果:www.你的域名.com/cut-string.html
echo ${variable:0-15:10}
结果:cut-string
echo ${variable:0-15}
结果:cut-string.html
第三种:
借助其他shell命令,如cut
cut命令的选项主要有以下几个:
echo $variable | cut -c1-4
结果:http
echo $variable | cut -c8-
结果:www.你的域名.com/cut-string.html
echo $variable | cut -d":" -f1
结果:http