bash自带的切片操作
echo ${#a} # $a中字符串的个数
echo ${a:3} # $a中从第三个开始取直到结束
echo ${a:3:2} # $a中从第三个开始去两个字符
echo ${a: -1} # 取最后一个字符
echo ${a#*.} # 从左边开始删除直到遇到.为止
echo ${a##*.} # 从左边开始删除直到遇到最后一个.为止
echo ${a%.*} # 从右面开始删除直到遇到.为止
echo ${a%%.*} # 从右面开始删除直到遇到最后一个.为止
echo ${a//abc/xyz} # 将变量a中的所有的abc替换成xyz
echo ${1#--check=} #删除第1个位置变量里的--check=字符串
echo ${1##[-+]} #删除第1个位置变量的内容开头的-或者+
cut 截取字符串
-c, --characters=LIST
select only these characters
-
表示连续
,
表示不连续
[root@rocky ~]# str="pythoniloveyou"
[root@rocky ~]# echo $str
pythoniloveyou
[root@rocky ~]# echo $str|cut -c 1-6
python
[root@rocky ~]# echo $str|cut -c 1,6
pn
[root@rocky ~]# echo $str|cut -c 1,6-9
pnilo
统计一个字符串的个数
[root@rocky ~]# echo ${#str}
14
[root@rocky ~]# echo $str|wc -L
14
截取
[root@rocky ~]# echo ${str:0:6}
python
[root@rocky ~]# echo ${str:7:4}
love
[root@rocky ~]# echo ${str: -3}
you
从左边开始删除直到遇到.为止
[root@rocky ~]# bigcity="beijing.shanghai.guangzhou.shenzhen.changsha"
[root@rocky ~]# echo ${bigcity#*.}
shanghai.guangzhou.shenzhen.changsha
[root@rocky ~]# echo ${bigcity##*.}
changsha
从右面开始删除直到遇到.为止
[root@rocky ~]# echo ${bigcity%.*}
beijing.shanghai.guangzhou.shenzhen
[root@rocky ~]# echo ${bigcity%%.*}
beijing
删除第一个位置变量的内容开头的-或者+
[root@rocky shell]# vim slice.sh
echo ${1##[-+]}
[root@rocky shell]# bash slice.sh abc+def-ghi+jkl-mno
abc+def-ghi+jkl-mno
[root@rocky shell]# bash slice.sh +abc+def-ghi+jkl-mno
abc+def-ghi+jkl-mno
[root@rocky shell]# bash slice.sh -abc+def-ghi+jkl-mno
abc+def-ghi+jkl-mno
删除第一个位置变量里的 --check=字符串
[root@rocky shell]# cat slice.sh
echo ${1##[+-]}
echo ${1#--check=}
[root@rocky shell]# bash slice.sh --check=root
-check=root
root
如果nicelevel变量存在就输出它的值,如果没有赋值,则输出空值
[root@rocky shell]# nicelevel=100
[root@rocky shell]# echo ${nicelevel:-}
100
如果niceleve1l变量存在就输出它的值,如果没有赋值,则输出0
[root@rocky shell]# echo ${nicelevel1:-}
[root@rocky shell]# echo ${nicelevel1:-0}
0
替换
[root@rocky shell]# num="123123456123"
[root@rocky shell]# echo ${num/123/abc}
abc123456123
[root@rocky shell]# echo ${num//123/abc}
abcabc456abc