1#!/bin/sh 2# makealias: make alias compressed dic and aff files 3# Usage: alias.sh dic aff (not alias.sh aff dic!) 4# Version: 2007-10-26 5 6case $# in 70|1) 8echo 'makealias: make alias compressed dic and aff files 9Usage: makealias file.dic file.aff (not makefile file.aff file.dic!)' >/dev/stderr 10exit;; 11esac 12 13DIC=`basename $1 .dic` 14AFF=`basename $2 .aff` 15 16# FLAG type definition must be before alias definitions 17grep '^FLAG' $2 >"${AFF}_alias.aff" 18 19awk 'BEGIN{n=1;m=1} 20function cutslash(st) { 21 if (split(st,t,"/") > 1) return t[1] 22 return st 23} 24function ltrim(st) { 25 sub(/^ +/,"",st) 26 return st 27} 28FILENAME ~ /.dic$/ && $1 ~ "/[^ \t]" { 29 split($1,t,"/") 30 if(!a[t[2]]){ 31 a[t[2]]=n 32 b[n]=t[2] 33 n++ 34 } 35 if (NF > 1) { 36 $1 = "" 37 if(!a2[$0]){ 38 a2[$0]=m 39 c[m]=$0 40 m++ 41 } 42 print t[1]"/"a[t[2]] "\t" a2[$0] 43 } else { 44 print t[1]"/"a[t[2]] 45 } 46 next 47} 48FILENAME ~ /.dic$/ && NF > 1 { 49 x = $1 50 $1 = "" 51 if(!a2[$0]){ 52 a2[$0]=m 53 c[m]=$0 54 m++ 55 } 56 print cutslash(x) "\t" a2[$0] 57 next 58} 59FILENAME ~ /.dic$/ { print cutslash($1) } 60FILENAME ~ /.aff$/ && /^[PS]FX/ && ($4 ~ /\/[^ ]/) && NF > 4 { 61 split($4,t,"/") 62 if(!a[t[2]]){ 63 a[t[2]]=n 64 b[n]=t[2] 65 n++ 66 } 67 begin = $1 " " $2 " " $3 " " (t[1]"/"a[t[2]]) " " $5 68 if ($6!="") ok = 1; else ok = 0; 69 $1 = "" 70 $2 = "" 71 $3 = "" 72 $4 = "" 73 $5 = "" 74 if(ok){ 75 if(!a2[$0]){ 76 a2[$0]=m 77 c[m]=$0 78 m++ 79 } 80 print begin " " a2[$0] >>"/dev/stderr" 81 } else print begin >>"/dev/stderr" 82 next 83} 84FILENAME ~ /.aff$/ && /^[PS]FX/ && NF > 4 { 85 begin = $1 " " $2 " " $3 " " cutslash($4) " " $5 86 if ($6!="") ok = 1; else ok = 0; 87 $1 = "" 88 $2 = "" 89 $3 = "" 90 $4 = "" 91 $5 = "" 92 if(ok) { 93 if (!a2[$0]){ 94 a2[$0]=m 95 c[m]=$0 96 m++ 97 } 98 print begin " " a2[$0] >>"/dev/stderr" 99 } else print begin >>"/dev/stderr" 100 next 101} 102FILENAME ~ /.aff$/ { print $0 >>"/dev/stderr" } 103END{ 104 if (n>1) { 105 print "AF", n-1 >>"'${AFF}_alias.aff'" 106 for(i=1;i<n;i++) print "AF", b[i],"#",i >>"'${AFF}_alias.aff'" 107 } 108 if (m>1) { 109 print "AM", m-1 >>"'${AFF}_alias.aff'" 110 for(i=1;i<m;i++) print "AM " ltrim(c[i]) >>"'${AFF}_alias.aff'" 111 } 112}' $1 $2 >${DIC}_alias.dic 2>${AFF}_alias.$$ 113grep -v '^FLAG' ${AFF}_alias.$$ >>${AFF}_alias.aff 114echo "output: ${DIC}_alias.dic, ${AFF}_alias.aff" 115rm ${AFF}_alias.$$ 116