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 去除輸出中重復的行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM