Como mesclar dois dicionário de contagem de frequência - unix cmd?

1

Estou tendo dois dicionário de contagem de frequência, tentei mesclá-los usando join / sort cmd, mas sempre obtendo saída errada ou contagem de frequência diferente. Quero juntá-los, adicionando +1 se a palavra existir e a nova contagem de palavras 1

  7 umslipped
  1 umslippersmouthwashand
  3 umslobagas
 35 umslopogaas
  5 (umslopogaas
 15 (umslopogaas)
  1 umslower
  6 umsmall
  2 umsnag
  2 um[snaps
 13 umsnootchie
  2 umsnow
 84 umso
 14 um-so ##

O segundo dicionário

1   palpating
1   palpated
1   palpate
1   palpably
1   palpable
1   palominos
1   palomino
1   palomar
1   palmyra
1   palmy
1   palmtops
1   palmtop
1   palms
1   palmolive
1   palmists
1   palmistry
1   palmist
    
por white_terminal 18.11.2016 / 22:32

1 resposta

3

Você pode usar awk para adicionar tudo.

awk '{ arr[$2] += $1} END {for (key in arr) {printf "%4s %s\n", arr[key], key}}' file1 file2

Explicação

  • { arr[$2] += $1} set o índice da matriz da nossa string, também conhecido como $2 to += , o número $1
  • END Quando terminarmos
  • {for (key in arr) {printf "%4s %s\n", arr[key], key}} Faz um loop por tudo e imprime.

O que eu fiz para testá-lo

arquivo1

  7 umslipped
  1 umslippersmouthwashand
  3 umslobagas
 35 umslopogaas
  5 (umslopogaas
 15 (umslopogaas)
  1 umslower
  6 umsmall
  2 umsnag
  2 um[snaps
 13 umsnootchie
  2 umsnow
 84 umso
 14 um-so ##

arquivo2

 14 um-so ##
 84 umso
  2 umsnow
 13 umsnootchie
  2 um[snaps
  2 umsnag
  6 umsmall
  1 umslower
 15 (umslopogaas)
  5 (umslopogaas
 35 umslopogaas
  3 umslobagas
  1 umslippersmouthwashand
  7 umslipped

Saída

  10 (umslopogaas
  12 umsmall
   6 umslobagas
  28 um-so
   2 umslippersmouthwashand
  30 (umslopogaas)
  70 umslopogaas
  26 umsnootchie
   4 umsnag
 168 umso
   4 um[snaps
  14 umslipped
   4 umsnow
   2 umslower
    
por 18.11.2016 / 22:46