Linux对变量的截取替换

Posted xiaochina

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux对变量的截取替换相关的知识,希望对你有一定的参考价值。

//对变量截取
${variable} 对变量值的修正(增删数据),仅仅修改输出后的结果对源值,并不做修改

#变数后对接字符
#  ##  //截取从前面开始
%  %%  //截取从后面开始
/  //   //替换

[[email protected]-test ~]# vbird="/home/vbird/testing/testing.x.sh"
[[email protected]-test ~]#
[[email protected]-test ~]#echo $vbird
/home/vbird/testing/testing.x.sh

#{variable#}  //#从前面开始截取
#{variable##}变数名称后面两个##表示在 ##后面的字串取最长那一段;仅有一个# 表示取最小的那一段

[[email protected]-test ~]#echo ${vbird##/*/}  //删除/*/中间的所有数据包括//  ##全部删除
testing.x.sh 
[[email protected]-test ~]#echo ${vbird#/*/}  //仅仅删除第一次匹配的  #删除第一次匹配的
vbird/testing/testing.x.sh


#{variable%}  //%从后面开始截取
#{variable%%}变数名称后面两个%%表示在 %%前面的字串取最长那一段;仅有一个# 表示取最小的那一段

[[email protected] ~]#echo $vbird
/home/vbird/testing/testing.x.sh

[[email protected] ~]#echo ${vbird%%/*}  //从后面开始 * -->/ 最大匹配删除,因此给删完了

[[email protected] ~]#echo ${vbird%/*}  //最短删除  /testing.x.sh
/home/vbird/testing

[[email protected] ~]#echo ${vbird%/*/}  //最后一个字符开始/而真实的是h
/home/vbird/testing/testing.x.sh

[[email protected]-test ~]#echo ${vbird%/*h} //最短删除后端h开头
/home/vbird/testing 
[[email protected] ~]#
[[email protected] ~]#
[[email protected] ~]#echo ${vbird%%/*h} //全量删除,结尾--开头

[[email protected] ~]#
[[email protected] ~]#echo ${vbird%%/*/}  //为匹配到,因此未能删除
/home/vbird/testing/testing.x.sh


#变量截取替换字符
//  /
[[email protected] ~]#echo ${vbird}
/home/vbird/testing/testing.x.sh
[[email protected]-test ~]#
[[email protected]-test ~]#
[[email protected]-test ~]#echo ${vbird/testing/TEST}  //  /最前面匹配的替换
/home/vbird/TEST/testing.x.sh 
[[email protected]-test ~]#
[[email protected]-test ~]#echo ${vbird//testing/TEST}  // //全局匹配替换
/home/vbird/TEST/TEST.x.sh

以上是关于Linux对变量的截取替换的主要内容,如果未能解决你的问题,请参考以下文章

linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )

shell脚本里,如何删除变量的最后一个字符?

shell脚本里,如何删除变量的最后一个字符?

linux 截取变量字符串

shell中按照指定字符截取两边的数据,放到变量里

如何用ffmpeg截取视频片段&截取时间不准确的坑