Fork me on GitHub

Shell 统计字符串中每个字符出现的次数(包含空格特殊字符)

Shell脚本实现如下:

#!/bin/bash

IFS=$'\n'   #echo自动将连续的空格当成一个处理

str='''abc b  ad&&    a'''

num=$( echo -n $str | wc -c )

i=1
while [ $i -le $num ]
do
        letter=`echo $str|cut -c $i`
        if [[ $letter = ' ' ]]
        then
            count=`echo $str |grep -o [[:space:]] |wc -l`
        else
            count=`echo $str |grep -o $letter |wc -l`
        fi
        echo "letter is '$letter',count is $count"
        i=`expr $i + 1`

done|sort -u

unset $IFS

  

注意:

1. IFS(Internal Field Seprator),内部域分隔符,这里出现的问题是echo会将多个连续的空格输出为一个;参考(2条消息) Shell中的IFS解惑_whuslei的博客-CSDN博客_ifs shell

2. 使用cut -c 切出字符串中的每一个字符

3. grep -o 匹配所有符合的内容,每个匹配内容输出为一行

4. sort -u 去除输出中重复的行

 

posted @ 2022-04-21 17:52  星拂晓空  阅读(1188)  评论(0编辑  收藏  举报