Conte e mescle padrões consecutivos

4

Estou procurando um snippet curto para encontrar, contar e mesclar duplicatas consecutivas usando ferramentas padrão ou uma linguagem de script comum.

Diga que nossa entrada é:

1 2 2 2 7 22 a b b c c c c c d dd 2 2 c c

Como saída, gostaríamos de ter algo semelhante a:

1 3*2 7 22 a 2*b 5*c d dd 2*2 2*c

É importante manter a ordem e mesclar apenas padrões consecutivos .

    
por scai 29.01.2014 / 15:07

1 resposta

5

Que tal isso:

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

Saída:

      1 1
      3 2
      1 7
      1 22
      1 a
      2 b
      5 c
      1 d
      1 dd
      2 2
      2 c

É simples e fácil (e semelhante ).

Para obter seu formato:

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' ' -
    
por 29.01.2014 / 15:20