Linux拓展之Shell中求字符串的长度
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux拓展之Shell中求字符串的长度相关的知识,希望对你有一定的参考价值。
概述
在 shell 脚本中,有时候需要去求字符串的长度。如下展示了常见求字符串长度的方法。
方法
变量 str
是一个字符串,由于字符串中可能有空格存在,所以引用字符串的值时使用 $str
格式而非 $str
(如果要使用则需要加上引号 "$str"
)。
方法一
# 语法
$#str]
# 示例
str="hello world"
echo $#str
方法二
利用 awk
命令的 length
方法。命令格式如下:
# 语法
echo $str | awk 'print length($0)'
# 示例
str="hello world"
echo $str | awk 'print length($0)'
方法三
利用 awk
命令的 NF
内置变量和 -F
选项设置字符串的分隔符,即字符串的长度。
# 语法
echo $str | awk -F "" 'print NF'
# 示例
str="hello world"
echo $str | awk -F "" 'print NF'
方法四
利用 wc
命令的 -L
选项,-L
选项表示获取最长行的长度。对于单个字符串来说,该选项能获取字符串的长度。命令格式如下:
# 语法
echo $str | wc -L
# 示例
str="hello world"
echo $str | wc -L
方法五
利用 wc
命令的 -c
选项,-c
选项用于统计字符的个数。但是在使用 echo
命令将字符串通过管道符输送给 wc
命令时需要加上 -n
选项,表示去掉字符串的 "\\n"
换行符,如果不去掉的话,字符个数就会多一个。命令格式如下:
# 语法
echo -n $str | wc -c
# 示例
str="hello world"
echo -n $str | wc -c
方法六
利用 expr
命令的 length
方法。命令格式如下:
# 语法
expr length "$str"
# 示例
str="hello world"
expr length "$str"
注意:如果使用
expr
命令求字符串长度的方法,传入的字符串中如果有空格,那么使用$str
引用会失败报错,所以需要使用"$str"
的方式进行引用。
方法七
利用 expr
命令的 STRING : REGEXP
匹配字符串,其中 STRING
是待匹配的字符串;REGEXP
是正则表达式,这里用 ".*"
表示匹配任意多个字符。命令格式如下:
# 语法
expr "$str" : ".*"
# 示例
str="hello world"
expr "$str" : ".*"
示例
对于上面的几种方法,如下 shell 脚本可做验证:test.sh
#!/bin/bash
# 参数校验
if [ ! $# -eq 1 ]; then
echo "请输入一个参数"
exit
fi
# 读入一个参数作为待求长度的字符串
str="$1"
## 方法一
len=$#str
echo "方法一:$len"
## 方法二
len=$(echo $str | awk 'print length($0)')
echo "方法二:$len"
## 方法三
len=$(echo $str | awk -F "" 'print NF')
echo "方法三:$len"
## 方法四
len=$(echo $str | wc -L)
echo "方法四:$len"
## 方法五
len=$(echo -n $str | wc -c)
echo "方法五:$len"
## 方法六
len=$(expr length "$str")
echo "方法六:$len"
## 方法七
len=$(expr "$str" : ".*")
echo "方法七:$len"
以上是关于Linux拓展之Shell中求字符串的长度的主要内容,如果未能解决你的问题,请参考以下文章