두 개의 빈도수 사전을 병합하는 방법 - unix cmd?

두 개의 빈도수 사전을 병합하는 방법 - unix cmd?

빈도 수에 대한 두 개의 사전이 있고 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 ##

두 번째 사전

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

관련 정보