计数和合并连续模式

sca*_*cai 4 duplicate python perl shell-script text-processing

我正在寻找一个简短的片段来使用标准工具或通用脚本语言查找、计算和合并连续的重复项。

假设我们的输入是:

1 2 2 2 7 22 a b b c c c c c d dd 2 2 c c
Run Code Online (Sandbox Code Playgroud)

作为输出,我们希望有类似的东西:

1 3*2 7 22 a 2*b 5*c d dd 2*2 2*c
Run Code Online (Sandbox Code Playgroud)

保持顺序并仅合并连续模式很重要。

cha*_*aos 5

这个怎么样:

printf '%s\n' 1 2 2 2 7 22 a b b c c c c c d dd 2 2 c c | uniq -c
Run Code Online (Sandbox Code Playgroud)

输出:

      1 1
      3 2
      1 7
      1 22
      1 a
      2 b
      5 c
      1 d
      1 dd
      2 2
      2 c
Run Code Online (Sandbox Code Playgroud)

它简单易行(和类似)。

要获取您的格式:

printf '%s\n' 1 2 2 2 7 22 a b b c c c c c d dd 2 2 c c |
  uniq -c | sed 's/^ *//;s/^1 //;s/ /*/' | paste -sd' ' -
Run Code Online (Sandbox Code Playgroud)