Bien vu [sic], hum, comme Jipété, le titre Ajouter un deuxième parametre dans un script est plutôt énigmatique; j'y vois a posteriori un rapport plus ou moins lointain avec le Script Doctor 8-)
Version imprimable
Bien vu [sic], hum, comme Jipété, le titre Ajouter un deuxième parametre dans un script est plutôt énigmatique; j'y vois a posteriori un rapport plus ou moins lointain avec le Script Doctor 8-)
Bon, y a prescription. On peut y aller.
"UTILISAI" a 3 "I" alors que "UTILISA" 2...
D'autre part, j'avais fini par faire la liste complète des mots:
Code:$ awk -F '' '{for (i=1;i<=NF;i++) {d[$0,$i]++;if (d[$0,$i]==1) nb[$i]++;if (d[$0,$i]>d[max[$i],$i]) {max[$i]=$0;alter[$i]=$0;} if ((d[$0,$i]==d[max[$i],$i])&&(max[$i]!=$0)) {alter[$i]=alter[$i]" "$0;}}} END{for (i in nb) print i,nb[i],alter[i];}'
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $ awk -F '' '{for (i=1;i<=NF;i++) {d[$0,$i]++;if (d[$0,$i]==1) nb[$i]++;if (d[$0,$i]>d[max[$i],$i]) {max[$i]=$0;alter[$i]=$0;} if ((d[$0,$i]==d[max[$i],$i])&&(max[$i]!=$0)) {alter[$i]=alter[$i]" "$0;}}} END{for (i in nb) print i,nb[i],alter[i];}' dc.txt |sort A 10 UTILISA UTILISABLE UTILISABLES UTILISAI UTILISAIENT UTILISAIS UTILISAIT UTILISAMES UTILISANT UTILISAS B 2 UTILISABLE UTILISABLES E 12 UTERINE UTERINES UTILEMENT I 17 UTILISAI UTILISAIENT UTILISAIS UTILISAIT L 13 UTILISABLE UTILISABLES M 2 UTILEMENT UTILISAMES N 8 USURPONS UTERIN UTERINE UTERINES UTERINS UTILEMENT UTILISAIENT UTILISANT O 1 USURPONS P 1 USURPONS R 6 USURPONS UTERIN UTERINE UTERINES UTERINS UTERUS S 15 USURPONS UTILISABLES UTILISAIS UTILISAMES UTILISAS T 19 UTILEMENT UTILISAIENT UTILISAIT UTILISANT U 20 USURPONS UTERUS
C'est vrai, mais bon la boulette n'était pas énorme, juste une erreur de variable.
Voici la version corrigée en claire (builtin bash) :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #!/bin/bash declare -A atmp alphaw alphan alphac for i in {A..Z} do alphac["$i"]=0 done while read word do cnt=${#word} atmp=() while [[ $(( --cnt )) -ge 0 ]] do atmp["${word:$cnt:1}"]=$((atmp["${word:$cnt:1}"]+1)) done for i in ${!atmp[@]} do alphan["$i"]=$((alphan["$i"]+1)) if [[ ${alphac["$i"]} -lt ${atmp["$i"]} ]] then alphac["$i"]=${atmp["$i"]} alphaw["$i"]="${word}" fi done done <$1 for i in ${!alphac[@]} do echo "$i - ${alphan[$i]} - ${alphaw[$i]}" done