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