变量替换
从头开始匹配删除字符串中内容
var="I love you, Dou you love me?"
var1=${var#*ov} # 非贪婪模式
>>> e you, Dou you love me?
var2=${var##*ov} # 贪婪模式
>>>e me?
从变量尾部尽心规则匹配并删除
var="I love you, Dou you love me?"
var3=${var%*ov}
>>>I love you, Dou you l
var4=${var%%*ov} # 贪婪模式
>>>I l
替换变量中字符
var="/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/hadoopuser/bin:/usr/local/bin:/home/hadoopuser/.local/bin:/home/hadoopuser/bin"
var5=${var/bin/BIN} # bin替换成BIN 只替换一个
var6=${vat//bin/BIN} # 全部替换
字符串处理
计算字符串长度
方法一
${#string}
方法二:如果string有空格,必须加双引号
expr length "$string"
例子:
var="hello world"
len=${#var}
>>>len=11
len=`expr length "$var"` # 必须要写双引号
获取子串在字符串中的索引位置
expr index $string $substring
例子:
var="hello word"
ind=`expr index "$var" word`
>>>ind=5 # 因为index函数是将word 切成字符去匹配 所以先找到了 o 所以返回的是5
获取子串长度
expr match "$string" substr
例子:
var="hello word"
sub_index=`expr mach "$var" hello`
>>>5
var="hello word"
sub_index=`expr mach "$var" word`
>>>0 # 因为match方法必须从头开始匹配,从中间任意一个字符匹配都匹配不到
提取子串
方法一:
1. ${string:position} # 下标是从0开始。不写length默认是提取到末尾
2. ${string:position:length}
3. ${string: -position} #-1是最后一个字符。注意:和 -之间有空格
或者${string:(position)}
示例:
var="hadoop hive spark"
substr=${var:10} # 从第10个位置提取到最后
>>>e spark
substr=${var:10:5}
>>>e spa
substr=${var: -5} # 倒数第5个位置开始提取到最后
>>>spark
substr=${var: -5:3} # 倒数第五个位置开始提取3个字符
>>>spa
substr=${var:(-5)} # 同substr=${var: -5}
substr=${var:(-5):3} # 同substr=${var: -5:3}
方法二:
expr substr $string $position $length # 使用该方法下标是从1开始计数
示例:
var="hadoop hive spark"
substr=`expr substr "$var" 10 5`
>>>ve sp # 注意这个方法下标是从1开始的