如何在Shell中计算字符串长度?


近期在整理之前的笔记时发现了这篇文章,是从 茶话汇 上看到的,自己实际测试了一下,在此做个记录:

方法1: 使用wc -L命令
wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数。
echo “abc” | wc -L
方法2: expr length string
使用expr length可以获取string的长度
方法3: awk获取域的个数
echo “abc” |awk -F “” ‘{print NF}’
方法4: 通过awk+length的方式获取字符串长度
echo “Alex”|awk ‘{print length($0)}’
方法5: 通过echo ${#string}的方式
(注意:这里的string是该字符串的变量名)
name=Alex
echo ${#name}
原文地址:
[Linux]如何在Shell脚本中计算字符串长度?

当字符串中含有转义字符时,遵从下面的结论
1. 若转义字符后跟随的是特殊字符,例如:$,那么在计算字符串长度时,会自动将转义符排除掉;
2. 若转义字符后跟随的不是特殊字符,而是字母、数字之类的,那么在计算字符串长度时,则会将转义符计算在内。
验证过程如下:

验证场景1:当转义符后跟随的不是特殊字符,是字母的场景,这时计算出来的字符串str=”abcn”的长度是5

[root@tektea ~]# str=”abcn”
[root@tektea ~]# echo $str | wc -L
5
[root@tektea ~]# echo $str | awk -F “” ‘{print NF}’
5
[root@tektea ~]# echo $str | awk ‘{print length($0)}’
5
[root@tektea ~]# echo ${#str}
5

验证场景2:当转义符后跟随的是特殊字符,这时计算出来的字符串str=”abc$”的长度是4

[root@tektea ~]# str=”abc$”
[root@tektea ~]# echo $str | wc -L
4
[root@tektea ~]# echo $str | awk -F “” ‘{print NF}’
4
[root@tektea ~]# echo $str | awk ‘{print length($0)}’
4
[root@tektea ~]# echo ${#str}
4

,

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注