10. shell子串用法
3.10 shell子串的用法¶
${变量} 返回变量值
${#变量} 返回变量长度
${变量:n} 返回n之后的字符
${变量:n:m} 返回n之后,m个字符
${变量#str} 从变量开头,删除最短匹配的str字符串
${变量##str} 从变量开头,删除最长匹配的str字符串
${变量%str} 从变量结尾,删除最短匹配的str
${变量%%str} 从变量结尾,删除最长匹配的str
${变量/a/str} 用str替换第一个匹配的a
${变量//a/str} 用str替换所有的a
案例
[root@151 ~]# name=chupeng
[root@151 ~]# echo ${name}
chupeng
[root@151 ~]# echo ${#name}
7
[root@151 ~]# echo ${name:3}
peng
[root@151 ~]# echo ${name:3:2}
pe
3.10.1 统计变量长度的4种方法¶
[root@151 ~]# echo ${#name}
7
[root@151 ~]# echo $name|wc -L
7
[root@151 ~]# expr length ${name}
7
[root@151 ~]# echo ${name} |awk '{print length($0)}'
7
3.10.2 统计命令执行的速度¶
1.seq命令的基本使用
[root@151 ~]# seq 3
1
2
3
[root@151 ~]# seq -s "," 3
1,2,3
2.for循环
[root@151 ~]# for i in {1..3};do str=`seq -s "---" 10`;echo $str;done
1---2---3---4---5---6---7---8---9---10
1---2---3---4---5---6---7---8---9---10
1---2---3---4---5---6---7---8---9---10
3.time函数查看命令运行时间
[root@151 ~]# time for n in {1..1000};do str=`seq -s "++++" 100`;echo ${#str} &>/dev/null;done
real 0m1.126s
user 0m0.714s
sys 0m0.379s
管道符查看字符串长度
[root@151 ~]# time for n in {1..1000};do str=`seq -s "++++" 100`;echo $str|wc -L &>/dev/null;done
real 0m2.225s
user 0m1.607s
sys 0m1.135s
length查看字符串长度
[root@151 ~]# time for n in {1..1000};do str=`seq -s "++++" 100`;expr length $str &>/dev/null;done
real 0m2.301s
user 0m1.393s
sys 0m0.947s
awk查看字符串长度
[root@151 ~]# time for n in {1..1000};do str=`seq -s "++++" 100`;echo $str|awk '{print length($0)}' &>/dev/null;done
real 0m2.356s
user 0m1.680s
sys 0m1.227s
求字符长度速度快慢结论¶
ubuntu@4c16g:~$ time for n in {1..1000};do str=`seq -s "++++" 100`;echo ${#str} &>/dev/null;done
real 0m1.720s
user 0m1.151s
sys 0m0.593s
ubuntu@4c16g:~$ time for n in {1..1000};do str=`seq -s "++++" 100`;echo $str|wc -L &>/dev/null;done
real 0m4.079s
user 0m2.927s
sys 0m1.575s
ubuntu@4c16g:~$ time for n in {1..1000};do str=`seq -s "++++" 100`;expr length $str &>/dev/null;done
real 0m3.100s
user 0m2.034s
sys 0m1.126s
ubuntu@4c16g:~$ time for n in {1..1000};do str=`seq -s "++++" 100`;echo $str|awk '{print length($0)}' &>/dev/null;done
real 0m4.918s
user 0m3.260s
sys 0m2.141s
## 可以看出:求字符长度速度从快到慢依次是:
# echo ${#str} > expr length $str > echo $str|wc -L > echo $str|awk '{print length($0)}'
最后更新:
2022-02-20 04:00:12