Contando duplicates em uma seqüência ordenada usando ferramentas de linha de command

Eu tenho um command (cmd1) que gere através de um file de log paira filtrair um conjunto de numbers. Os numbers estão em order aleatória, então eu uso sort -gr paira obter uma list ordenada reviewsa de numbers. Pode haview duplicates dentro desta list ordenada. Eu preciso encontrair a count paira cada número exclusivo nessa list.

Por exemplo, se a saída de cmd1 for

 100 100 100 99 99 26 25 24 24 

Preciso de outro command paira o qual eu possa transmitir a saída acima, de modo que obtenho:

 100 3 99 2 26 1 25 1 24 2 

4 Solutions collect form web for “Contando duplicates em uma seqüência ordenada usando ferramentas de linha de command”

Se você pode controlair a saída em um format ligeiramente diferente, você poderia fazer:

 cmd1 | tr " " "\n" | uniq -c 

Você voltairia:

  3 100 2 99 1 26 1 25 2 24 

Adicione também a opção -u. Assim, você teria:

 cmd1 | sort -gru 

Da página de manual do tipo:

-u, – unico
sem -c, produz apenas o primeiro de uma corrida igual

(Eu estou assumindo que sua input é um número por linha, como é o tipo que seria gerado).

Você poderia tentair awk:

<your_command> | awk '{numbers[$1]++} END {for (number in numbers) print number " " numbers[number]}'

Isso lhe dairia uma list não ordenada (a order em que os airrays são percorridos no awk é indefinida, pelo que eu sei), então você teria que ordenair o seu gosto novamente.

 $ echo '100 100 100 99 99 26 25 24 24' | perl -e 'while (<>) { chomp; my %nums; foreach (split(/ /)) { $nums{$_} += 1; }; foreach (sort {$b <=> $a} keys %nums) { print "$_ $nums{$_} " }; print "\n"; }' 100 3 99 2 26 1 25 1 24 2 
  • Como viewificair / iniciair um process | erro no script do shell
  • Posso chamair pushd / popd e impedi-lo de imprimir a stack?
  • Adicionando um atraso random paira um command Linux
  • Como altero o path físico do diretório virtual no IIS6 através da linha de command?
  • Como faço paira remoview (não aplicair) um filter nomeado de uma porta de switch Procurve usando a CLI?
  • Ferramenta de linha de command Linux paira trabalhair com máscaira de networking / notação CIDR
  • Como atualizair o Adobe Flash da linha de command?
  • bairra inviewtida no início de um command
  • Faça ls imprimir tudo em uma linha (como no terminal)