linux 获取字符长度

linux 获取字符长度

写脚本遇到获取变量或字符长度问题,如字符串长度、截取指定长度等。

获取字符操作常用两种${}和awk

${}:字节的起始位是0

awk:字节的起始位是1

如:获取字符串长度

AAA=ffing.cn
###使用${}
[root@ffing ~]# echo ${#AAA}
8

###使用awk需配合length
[root@ffing ~]# echo $AAA|awk '{print length}'
8

如:截取字符

AAA=ffing.cn
###使用${}
#截取前2个字节:0代表起始位置:2代表两个字节
[root@ffing ~]# echo ${AAA:0:2}
ff
#截取第后2个字节,需要先获取总字节长度,$(())支持语法及运算
[root@ffing ~]# NUM=$((${#AAA}-2)) &&echo $NUM
6
#起始位是0,因此6其实是第7位字节!
[root@ffing ~]# echo ${AAA:NUM:2}
cn

###awk需配合substr
#截取前2个字节,1代表起始位置,2代表2个字节
[root@ffing ~]# echo $AAA|awk '{print substr($1,1,2)}'
ff
#截取最后2个字节,需利用length获取字符长度,为什么减1?因为awk起始位置是1
#即:substr内为($1,8-1,2),从第7为取2个字节!
[root@ffing ~]# echo $AAA|awk '{print substr($1, length($1)-1  ,2)}'
cn

场景应用1:获取时间戳

#时间戳获取:时分秒
DATETIME='**** 15/Mar/2022_15:13:09AM'

#awk获取时间戳,以冒号分割
#小时是倒数第三个字段$(NF-2),取最后2个字节:substr($(NF-2),length($(NF-2))-1,2)
#分钟是倒数第二个字段$(NF-1)
#秒就是最后一个字段$NF,取前2个字节了:substr( $NF,1,2 )


echo $DATETIME|awk -F":" '{print substr($(NF-2),length($(NF-2))-1,2) ":" $(NF-1) ":" substr( $NF,1,2 )}'

#注:获取小时,需要先获取$(NF-2)的长度,因此length( $(NF-2) )

场景应用2:获取文件名

#不推荐$0,因为$0其实是你执行脚本的路径
#推荐readlink -f 《文件名》
#
good good study, day day up!

发表评论

textsms
account_circle
email

linux 获取字符长度
写脚本遇到获取变量或字符长度问题,如字符串长度、截取指定长度等。 获取字符操作常用两种${}和awk ${}:字节的起始位是0 awk:字节的起始位是1 如:获取字符串长度 AAA=…
扫描二维码继续阅读
2022-04-10