J'ai deux fichiers au format de cette façon:entrée pour `division Canalisé bc` génère des nombres aléatoires
Fichier1:
word token occurence
Fichier2:
token occurence
Ce que je veux est un troisième fichier avec cette sortie:
word token occurrence1/occurence2
Voici mon code:
while read token pos count
do
#get pos counts
poscount=$(grep "^$pos" $2 | cut -f 2)
#calculate probability
prob=$(echo "scale=5;$count/$poscount" | bc -l)
#print token, pos-tag & probability
echo -e "$token\t$pos\t$prob"
done < $1
Le problème est que ma sortie est quelque chose comme ceci:
- : .25000
: : .75000
' '' 1.00000
0 CD .00396
1000 CD .00793
13 CD .00793
13th JJ .00073
36
29
16 CD .00396
17 CD .00396
Il y a des lignes avec des chiffres que je ne sais pas d'où ils viennent, ils ne sont pas dans les fichiers précédents.
Pourquoi ces chiffres apparaissent-ils? Y a-t-il un moyen de supprimer ces lignes? Merci d'avance!
Quels sont e Les vrais noms de fichiers? Double citez les variables de sécurité: '" $ 2 "'. – choroba
Pourquoi ne publiez-vous pas certaines lignes des vrais fichiers? Avez-vous essayé de déboguer votre propre script en utilisant des astuces telles que l'option '-x' ou' echo -e "> $ jeton <\t> $ count <\t> $ postcount <" '? En d'autres termes, comment pouvez-vous être si sûr que c'est la division qui '' génère des nombres aléatoires'' quand vous n'avez pas inspecté les valeurs 'count' et' postcount'? – Jdamian
Probablement le coupable: 'grep"^$ pos "$ 2 | coupe -f 2'; Si plusieurs lignes commencent par une valeur particulière de '$ pos', alors' grep' les trouverait toutes. – agc