成功最有效的方法就是向有经验的人学习!

Shell中获取字符串长度的七种方法

求字符串操作在shell脚本中很常用,下面归纳、汇总了求字符串的几种可能方法:

方法一】:利用${#str}来获取字符串的长度

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# echo ${#str}
12

方法二】:利用awk的length方法

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# echo ${str}|awk '{print length($0)}'
12

备注:

1) 最好用{}来放置变量

2) 也可以用length($0)来统计文件中每行的长度

[root@oldboyedu ~]# head -3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@oldboyedu ~]# head -3 /etc/passwd|awk '{print length($0)}'
31
32
39

方法三】:利用awk的NF项来获取字符串长度

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# echo ${str}|awk -F "" '{print NF}'
12

备注: -F为分隔符,NF为域的个数,即单行字符串的长度

方法四】:利用wc的-L参数来获取字符串的长度

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# echo ${str}|wc -L
12
[root@oldboyedu ~]# cat /etc/passwd|wc -L
76

备注: -L参数

1) 对多行文件来说,表示打印最长行的长度! 82,表示/etc/passwd文件最长行的长度为82

2) 对单行字符串而言,表示当前行字符串的长度!

方法五】:利用wc的-l参数,结合echo -n参数

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# echo -n "blog.linuxbaodian.com"|wc -c
12
[root@oldboyedu ~]# echo  "blog.linuxbaodian.com"|wc -c
13

备注:

1) -c参数: 统计字符的个数

2) -n参数: 去除”\n”换行符,不去除的话,默认带换行符,字符个数就成了7

方法六】:利用expr的length方法

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# expr length ${str}
12

【方法七】:利用expr的$str : “.*”技巧

[root@oldboyedu ~]# str="blog.linuxbaodian.com"
[root@oldboyedu ~]# expr ${str} : ".*"
12

[root@oldboyedu ~]# str="blog.linuxbaodian.com";expr ${str} : ".*"
12

备注: .*代表任意字符,即用任意字符来匹配字符串,结果是匹配到6个,即字符串的长度为6

赞(1) 打赏
未经允许不得转载:陈桂林博客 » Shell中获取字符串长度的七种方法
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册