需要使用 shell 进行 Desire 输出

需要使用 shell 进行 Desire 输出

我需要使用 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

相关内容