2つの頻度辞書をマージする方法 - unix cmd?

2つの頻度辞書をマージする方法 - unix cmd?

頻度の数には2つの辞書があり、Join / sort cmdを使用してそれらをマージしようとしますが、常に間違った出力または他の頻度の数を取得します。私はそれらを一緒にリンクし、単語が存在し、新しい単語の数が1の場合は+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 ##

2番目の辞書

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

答え1

awkを使用してすべてを追加できます。

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

説明する

  • { arr[$2] += $1}文字列の配列インデックスを数値$2に設定+=$1
  • END私たちが終わったら
  • {for (key in arr) {printf "%4s %s\n", arr[key], key}}すべてを繰り返して印刷します。

私がそれをテストするために何をしたのか

ファイル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 ##

ファイル2

 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

出力

  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

関連情報