shell求字符串长度的方法详解

发布时间:2020-05-05编辑:脚本学堂
本文介绍下,在shell编程中,取得字符串长度的多种方法,包括${}特殊变量、awk等方法。有需要的朋友参考下。

本节分享的内容为:
shell编程中,计算字符串的长度,即所有字符的个数,并简单介绍几种求字符串中指定字符个数的方法。

示例:
 

复制代码 代码示例:

// 计算某个字符串的长度,即所有字符的个数
$ var="get the length of me"
$ echo ${var}     # 这里等同于$var
get the length of me
$ echo ${#var}
20
$ expr length "$var"
20
$ echo $var | linuxjishu/13830.html target=_blank class=infotextkey>awk '{printf("%dn", length($0));}'
20
$ echo -n $var |  wc -c
20
// 计算某些指定一个字符或者多个字符的个数
$ echo $var | tr -cd g | wc -c
2
$ echo -n $var | sed -e 's/[^g]//g' | wc -c
2
$ echo -n $var | sed -e 's/[^gt]//g' | wc -c
5
// 如果要统计单词个数,更多相关信息见《shell编程之数值计算》之 _单词统计_ 实例。
$ echo $var | wc -w
5
$ echo "$var" | tr " " "n" | grep get | uniq -c
1
$ echo "$var" | tr " " "n" | grep get | wc -l
1

stringZ=abcABC123ABCabc
echo `expr "$stringZ" : '.*'`    # 15

说明:

${}操作符在Bash里头一个“大牛”,能胜任相当多的工作,具体就看看网中人的《shell十三问》之《Shell十三问》之"$(( )) 與 $( ) 還有${ } 差在哪?" 吧。

在一个文本文件的段落之间插入空行:
 

复制代码 代码示例:

#!/bin/bash
# paragraph-space.sh

# 在一个单倍行距的文本文件中插入空行.
# Usage: $0 <FILENAME
 
MINLEN=45        # 可能需要修改这个值.
#  假定行的长度小于$MINLEN所指定的长度的时候
#+ 才认为此段结束.

while read line  # 提供和输入文件一样多的行...
do
   echo "$line"   # 输入所读入的行本身.
 
   len=${#line}
   if [ "$len" -lt "$MINLEN" ]
     then echo    # 在短行(译者注: 也就是小于$MINLEN个字符的行)后面添加一个空行.
   fi 
done
 
exit 0

索引:
expr index $string $substring

在字符串$string中所匹配到的$substring第一次所出现的位置.
 

复制代码 代码示例:

stringZ=abcABC123ABCabc
echo `expr index "$stringZ" C12` # 6
# C 字符的位置.

echo `expr index "$stringZ" 1c` # 3
# 'c' (in #3 position) matches before '1'.
 

这种方法与C语言中的strchr()函数很相似。