1 字符串删除
var=http://www.ssjt.com/shy.htm
1. 删除某个子串及其左边的内容
1) # 号截取,从左边开始查找要删除的内容
echo ${var#*//}
#*// 表示从左边开始删除第一个 // 号及左边的所有字符,即删除 http://,
结果是 :www.ssjt.com/shy.htm
2) ## 号截取,从左边开始查找要删除的内容
echo ${var##*/}
##*/ 表示从左边开始删除最后一个 / 号及左边的所有字符,即删除 http://www.ssjt.com/,
结果是 shy.htm
2. 删除某个子串及其右边的内容
1) %号截取,从右边开始查找要删除的内容
echo ${var%/*}
%/* 表示从右边开始,删除第一个 / 号及右边的字符, 即删除 /shy.htm,
结果是:http://www.ssjt.com
2) %% 号截取,从右边开始查找要删除的内容
echo ${var%%/*}
%%/* 表示从右边开始,删除最后一个 / 号及右边的字符, 即删除 /www.ssjt.com/shy.htm,
结果是:http:
2 字符串截取
var=http://www.ssjt.com/shy.htm
1. 根据索引从左边开始截取字符串
1) 从左边第m个字符开始,截取n个字符
echo ${var:0:5}
其中的 0 表示左边第一个字符开始,5 表示字符的总个数,结果是:http:。
2) 从左边第m个字符开始,一直到结束
echo ${var:7}
其中的 7 表示左边第8个字符开始,一直到结束,结果是 :www.ssjt.com/shy.htm
2. 根据索引从右边开始截取字符串
1) 从右边第m个字符开始,截取n个字符
echo ${var:0-7:3}
其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。结果是:shy
2) 从右边第几个字符开始,一直到结束
echo ${var:0-7}
表示从右边第七个字符开始,一直到结束。
结果是:shy.htm
3 字符串包含
str_1="ssjt"
str_2="jt"
# 1、利用grep
result=$(echo $str_1 | grep "${str_2}")
if [[ "$result" != "" ]]
then
echo "包含"
else
echo "不包含"
fi
# 2、利用运算符
if [[ $str_1 =~ $str_2 ]]
then
echo "包含"
else
echo "不包含"
fi
# 3、利用通配符
if [[ $str_1 == *$str_2* ]]
then
echo "包含"
else
echo "不包含"
fi
# 4、利用替换
if [[ ${str_1/${str_2}//} == $str_1 ]]
then
echo "不包含"
else
echo "包含"
fi
4. 字符串输出
sqls="
aa
bb
"
# a)
echo "${sqls}"
aa
bb
# b)
echo ${sqls}
aa bb
5. 字符串循环
# 字符串替换方式实现
dates=20221218,20221219,20221220
date_arr=${dates//,/ }
for date in ${date_arr}
do
echo ${date}
done
6. 字符串替换
shell(bash)替换字符串大全_小风筝123的博客-CSDN博客_shell 字符串替换
7. 具体场景
# 切分出库名和表名
tbl_name="ssjt.shy"
db=${tbl_name%.*}
tb=${tbl_name#*.}
echo ${db}
echo ${tb}