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