阅读原文:https://www.jb51.net/article/121290.htm

这篇文章主要给大家总结分享了关于Shell获取字符串长度的多种方法,包括了利用${#str}、利用awk的length方法、利用awk的NF项、利用wc的-L参数、利用expr的length方法以及利用expr的$str : ".*"技巧来实现方法示例,需要的朋友可以参考下。

前言
在日常工作中,对于求字符串操作在shell脚本中很常用,实现的方法有很多种,下面就来给大家归纳、汇总了求字符串的几种可能方法,话不多说了,来一起看看详细的介绍吧。

方法如下:
【方法一】:利用${#str}来获取字符串的长度
str="ABCDEF"
echo ${#str}

【方法二】:利用awk的length方法
str="ABCDEF"
echo ${str}|awk '{print length($0)}'

备注:
1) 最好用{}来放置变量
2) 也可以用length($0)来统计文件中每行的长度
awk '{print length($0)}' /etc/passwd
awk '{print length($NF)}' /etc/passwd #计算最后一个字段的长度

【方法三】:利用awk的NF项来获取字符串长度
str="ABCDEF"
echo ${str}|awk -F"" '{print NF}'

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

【方法四】:利用wc的-L参数来获取字符串的长度
str="ABCDEF"
echo ${str}|wc -L
cat /etc/passwd |wc -L # 输出:82

备注: -L参数
1) 对多行文件来说,表示打印最长行的长度!82,表示/etc/passwd文件最长行的长度为82。
2) 对单行字符串而言,表示当前行字符串的长度!

【方法五】:利用wc的-l参数,结合echo -n参数
str="ABCDEF"
echo -n ${str}|wc -c
echo ${str} |wc -c

备注:
1) -c参数: 统计字符的个数
2) -n参数: 去除"\n"换行符,不去除的话,默认带换行符,字符个数就成了7

【方法六】:利用expr的length方法
str="ABCDEF"
expr length ${str}

【方法七】:利用expr的$str : ".*"技巧,变量带不带花括号无差别
str="ABCDEF"
expr ${str} : ".*"

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

posted on 2021-12-08 15:56  51core  阅读(1107)  评论(0编辑  收藏  举报