浅谈Linux bash脚本----截取字符串

#

用于删除左起第一个匹配内容,即截取右侧内容

##

用于删除右起第一个匹配内容,即截取右侧内容

%

用于删除右起第一个匹配内容,即截取左侧内容

%%

用于删除左起第一个匹配内容,即截取左侧内容

举例

file=/dir1/dir2/dir3/my.file.txt

echo ${file#*/} # 删掉左起第一个/及其左侧内容,*号为通配符,/为查找目标
#>dir1/dir2/dir3/my.file.txt

echo ${file##*/} # 删掉右起第一个/及其左侧内容,*号为通配符,/为查找目标
#>my.file.txt

echo ${file#*.} # 删掉左起第一个.及其左侧内容,*号为通配符,.为查找目标
#>file.txt

echo ${file##*.} # 删掉右起第一个.及其左侧内容,*号为通配符,.为查找目标
#>txt


echo ${file%/*} # 删掉右起第一个/及其右侧内容,*号为通配符,/为查找目标
#>/dir1/dir2/dir3

echo ${file%%/*} # 删掉右起第一个/及其左侧内容,*号为通配符,/为查找目标
#>(空字符串)

echo ${file%.*} # 删掉左起第一个.及其左侧内容,*号为通配符,.为查找目标
#>/dir1/dir2/dir3/my.file

echo ${file%%.*} # 删掉右起第一个.及其左侧内容,*号为通配符,.为查找目标
#>/dir1/dir2/dir3/my

注意:

1.截取右侧内容时,使用#或##,且*号必须在匹配字符左侧,表示删除匹配字符和*号匹配内容;

2.截取左侧内容时,使用%或%%,且*号必须在匹配字符右侧,表示删除匹配字符和*号匹配内容;

3.匹配内容可以不单单一个字符,可以是一个字符串,如:

echo ${file%%my*} # 删掉右起第一个my及其左侧内容,*号为通配符,my为查找目标
#>/dir1/dir2/dir3/

你可能感兴趣的:(linux,bash,运维)