Linux shell 字符串切割 内置方法

$myStr="node=slave-01:2.05:1.25:1.00"
$time tmp=${myStr%%:*};echo ${tmp##*=}
real    0m0.000s
user    0m0.000s
sys     0m0.000s
slave-01

${string#*pattern}        从左边开始最小化匹配pattern ,并删除(从左边开始)第一个pattern及其左边字串

${string##*pattern}     从左边开始最大化匹配pattern,并删除(从左边开始)最后一个pattern及其左边字串

${string%pattern*}       从右边开始最小化匹配pattern,并删除(从右边开始)第一个pattern及其右边的字串(从后向前)

${string%%pattern**}  从右边开始最大化匹配pattern,并删除(从右边开始)最后个pattern及其右边的字串(从后向前)

#是去掉左边

%是去掉右边

单个最小匹配,两个最大匹配

$ echo ${myStr:0:5}
node=
$ echo ${myStr:5:5}
slave

${string:start:length}  (0开始计数)

包含第start元素,取到第(start+length-1)个元素

$echo ${myStr/:/_}
node=slave-01_2.05:1.25:1.00
$ echo ${myStr//:/_}
node=slave-01_2.05_1.25_1.00

${string/old/new}  将第一个old替换为new

${string//old/new} 将所有old替换为new

old含/时用转义

原文地址:https://www.cnblogs.com/jachin/p/4496049.html