[Linux]如何在Shell脚本中计算字符串长度?

有时在Linux操作系统中需要计算某个字符串的长度,通过查询资料整理了下目前Shell中获取字符串的长度的多种方法,在这里分享给大家,方法如下:

方法1: 使用wc -L命令
wc -L可以获取到当前行的长度,因此对于单独行的字符串可以用这个简单的方法获取,另外wc -l则是获取当前字符串内容的行数。

[code lang=”shell”]echo "abc" |wc -L[/code]

方法2: expr length string
使用expr length可以获取string的长度

方法3: awk获取域的个数,但是如果大于10个字符的长度时是否存在问题需要后面确认

[code lang=”shell”]echo "abc" |awk -F "" ‘{print NF}'[/code]

方法4: 通过awk+length的方式获取字符串长度

[code lang=”shell”] echo “Alex”|awk ‘{print length($0)}'[/code]

方法5: 通过echo ${#string}的方式(注意:这里的string是该字符串的变量名)

[code lang=”shell”] name=Alex
echo ${#name}[/code]

shell中应该还有其它获取字符串长度的方法,请大家有知道其它方式的回复补充下,有存在问题的地方大家指正!

网友评论comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

  1. Alex说道:

    在sh和bash下这样也能求出字符串长度
    # name=Alex
    # echo ${#name}
    4

  2. Alex说道:

    方法3在bash下验证了,大于十个字符也没有问题。

    刚又想起来一个方法:
    # echo “Alex”|awk ‘{print length($0)}’
    4

  3. admin说道:

    Alex厉害啊,这几个方法得补充上去。

  4. 捣乱说道:

    awk文本处理利器啊,建议写个入门教程什么的

  5. 小魔说道:

    上周遇到一个问题:
    使用bash写tcp客户端时,如果有\r \t \n 之类的转义时,上面所有方法都将之计算为两个字符。

    如: echo “abc\n” |wc -L 的结果是5,其它几种方法也都一样?

    • TUNA说道:

      我测试了下,转义字符只有在\后面跟的是个特殊符号时(例如:$),前面这几种计算字符串长度的方法才会将\排除掉,

      否则像你这里提到的\n,其实这个\符号并不是其转义的作用,所以在计算字符长度时会将\计算在内的。

  6. […] 前面的一篇文章《[Linux]如何在Shell脚本中计算字符串长度?》介绍了如何使用Shell计算字符长度,但小魔发现当字符串中包含转义字符时,文章所提供的几种方法会将转义字符统计在内,通过我在环境中的测试,先直接给出验证结论: 1. 若转义字符后跟随的是特殊字符,例如:$,那么在计算字符串长度时,会自动将转义符排除掉; 2. 若转义字符后跟随的不是特殊字符,而是字母、数字之类的,那么在计算字符串长度时,则会将转义符计算在内。 […]

  7. JackpGao说道:

    expr length $str

Copyright © 2012-2017 YUNWEIPAI.COM - 运维派 - 粤ICP备14090526号-3
扫二维码
扫二维码
返回顶部