我需要使用 shell 脚本获得所需的输出。
输入:
aaabbcaaabbcc
期望的输出:
a3b2ca3b2c2
仅当每个字母大于 1 时,命令才应打印每个字母的出现次数,即aaab
应为a3b
。
我尝试使用以下命令,但它们对我不起作用,因为我必须手动将字符传递给我的命令。
echo "aaabbcaaabbcc" | grep -o a
echo "aaabbcaaabbcc" | uniq -c
echo "aaabbcaaabbcc" | grep -o a | uniq -c
我无法找到如何按字符拆分它然后检查出现次数。
答案1
str="aaabbcaaabbcc"
echo $str | fold -w1 | uniq -c | \
while read count char; do
if [ $count -gt 1 ]; then
printf "$char$count"
else
printf "$char"
fi
done
a3b2ca3b2c2