使用linux 自带的bash实现变量的子串替换

使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值