Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/11/2008, à 13:19

korbé

Problème AWK et accents

Bonjour tout le monde.

Voilà mon problème:
J'ai fais un scripte awk qui, sur un dictionnaire de mots français (un mot par ligne), trouve et affiche des palindromes.

Mais, alors qu'il parais juste, les accents ne sont pas toujours éliminé et il m'affiche tout les mots du dit dico une fois sur deux. Le reste du temps, il fonctionne.

En gros, AWK ne gère pas du tout les accents

Voici le code:

#Name of programme: palindrome
#Name of programmer: xxxxxxxxxxxx
BEGIN{ print "palindrome"
       print "----------"
}
{
 gsub(/[éèêë]/,"e")
 gsub(/[àä]/,"a")
 gsub(/[íïî]/,"i")
 gsub(/[ûü]/,"u")
 gsub(/[ôö]/,"o")
 gsub(/[ç]/,"c")
 start=1
 end=length($0)
 split($0,word,"")
 ok=1
 while((start!=end)&&(start-1!=end))
 {
   if(word[start]!=word[end])
   {
     ok=0
     break
   }
   start++
   end--   
 }
 if(ok==1)
  print $0
}
END{
 print "----------"

}

Merci d'avance pour toute aides. ^_^


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#2 Le 26/11/2008, à 18:37

Didoouuuu

Re : Problème AWK et accents

AWK, c'est un exercice imposé ?

Sinon, j'ai découvert python, il y a à peine une semaine et je peux te dire que tu arrives à tes fins plus vite.

Je me suis basé sur des exemples de ce site  pour apprendre : www.java2s.com.
Je suis certain que tu arriveras à faire ton script en Python en moins de 2 heures avec ce site car c'est très complet. Parole de débutant Python.

Bon courage

#3 Le 26/11/2008, à 19:30

Alain.g

Re : Problème AWK et accents

Bonsoir
L'encodage des deux fichiers est-il le même (UFT-8 par exemple ?). Si oui ça devrait fonctionner.


Xubuntu Karmic !

Hors ligne

#4 Le 26/11/2008, à 20:43

korbé

Re : Problème AWK et accents

@didooo: oui, c'est un exercice imposer, après on passe au scrypte shell.
note: je suis en formation de technicien en informatique, mais même le prof comprend pas pourquoi...

@Alain.g: Ben ça fonctionne sur le PC du prof (sous Ubuntu), et sur les cinq PC sous Ubuntu (et oui, les autres ce croyant mieux que le commun des mortels, ils estiment que seul windows leurs conviens... pitoyable), sur un seul cela fonctionne, pas sur les 4 autres.


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#5 Le 26/11/2008, à 22:23

Totor

Re : Problème AWK et accents

Bonsoir,

awk t'es peut-être imposé mais tu peux feinter big_smile A toi de voire wink
avec awk, tu peux faire appel à d'autres scripts. donc, je te propose 1 script et une ligne de commande :

le script : ${HOME}/palindrome.sh

#!/bin/bash
function convertir
{
  mot="$1"
  mot="${mot//[éèêë]/e}"
  mot="${mot//[àä]/a}"
  mot="${mot//[íïî]/i}"
  mot="${mot//[ûü]/u}"
  mot="${mot//[ôö]/o}"
  mot="${mot//[ç]/c}"
  echo "${mot}"
}

unmot="$*"
unmot="$(convertir "${unmot}")"
revert=$(echo "${unmot}"|rev)
[[ "${unmot}" != "${revert}" ]] && exit 1
exit 0

la ligne de commande :

awk '{if (system("$HOME/palindrome.sh "$0) == 0) {print $0}}' <nomFichierDico>

bon, ton prof n'acceptera certainement pas cette solution...
mais peut-être que celle-ci oui ;

script $HOME/convertir.sh :

#!/bin/bash
while read mot
do
mot="${mot//[éèêë]/e}"
mot="${mot//[àä]/a}"
mot="${mot//[íïî]/i}"
mot="${mot//[ûü]/u}"
mot="${mot//[ôö]/o}"
mot="${mot//[ç]/c}"
echo "${mot}"
done

et une ligne de commande

$HOME/convertir.sh <<nomFichierDico>|awk ' BEGIN {print "palindrome\n----------"} {start=1;end=length($0);split($0,word,"");ok=1;while((start!=end)&&(start-1!=end)){ if(word[start]!=word[end]) { ok=0; break; }; start++; end--; }; if(ok==1) {print $0}}
END{ print "----------"}'

je n'ai pas pris la peine de d'écrire le script awk dans un fichier et je ne l'ai pas testé la ligne illisible que je te donne mais le principe est là.

Dernière modification par Totor (Le 26/11/2008, à 23:08)


-- Lucid Lynx --

Hors ligne

#6 Le 26/11/2008, à 22:28

korbé

Re : Problème AWK et accents

Ouep merci, mais les fonction sont elles aussi imposé (gsub)

PS: comment connaitre le codage du fichier texte (utf-8, ISOXXXX, etc) rapidement? j'ai pas trouvé l'option dans gedit...

Dernière modification par korbé (Le 26/11/2008, à 22:29)


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#7 Le 26/11/2008, à 23:14

Alain.g

Re : Problème AWK et accents

J'ai testé le code avec gawk, mawk et nawk. Et effectivement ça ne fonctionne pas avec mawk (qui est l'interpréteur awk d'origine sous ubuntu). Le problème vient donc de là

$ echo élève | mawk '{gsub("[éè]","e"); print}'
eeleeve
$ echo élève | gawk '{gsub("[éè]","e"); print}'
eleve

Dernière modification par Alain.g (Le 26/11/2008, à 23:19)


Xubuntu Karmic !

Hors ligne

#8 Le 26/11/2008, à 23:30

Totor

Re : Problème AWK et accents

korbé a écrit :

Ouep merci, mais les fonction sont elles aussi imposé (gsub)

PS: comment connaitre le codage du fichier texte (utf-8, ISOXXXX, etc) rapidement? j'ai pas trouvé l'option dans gedit...

Et bien normalement avec la commande file (je crois)
sinon, tu as utrac.

Alain.g a écrit :

J'ai testé le code avec gawk, mawk et nawk. Et effectivement ça ne fonctionne pas avec mawk (qui est l'interpréteur awk d'origine sous ubuntu). Le problème vient donc de là

$ echo élève | mawk '{gsub("[éè]","e"); print}'
eeleeve
$ echo élève | gawk '{gsub("[éè]","e"); print}'
eleve

huuum, étonnant alors qu'il y ait 1 poste ubuntu avec lequel ça fonctionne.:rolleyes:
@korbé : les 5 postes ont-ils la même version d'ubuntu/awk ?


-- Lucid Lynx --

Hors ligne

#9 Le 27/11/2008, à 02:54

Alain.g

Re : Problème AWK et accents

Totor a écrit :

huuum, étonnant alors qu'il y ait 1 poste ubuntu avec lequel ça fonctionne.:rolleyes:

Pourquoi étonnant ? ça veut simplement dire que gawk (gnu awk) a été installé sur ce poste et qu'il est devenu du coup l'interpréteur awk par défaut.


Xubuntu Karmic !

Hors ligne

#10 Le 27/11/2008, à 10:36

Totor

Re : Problème AWK et accents

Probablement, c'est pour cela que je demandais les versions wink


-- Lucid Lynx --

Hors ligne

#11 Le 27/11/2008, à 11:00

korbé

Re : Problème AWK et accents

normalement, c'est tous des 8.04 mis a jours, sauf le mien, un 8.10.

on utilise tous awk, mais est-il possible, qu'avec la commande awk, on utilise gawk?


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#12 Le 27/11/2008, à 11:13

Totor

Re : Problème AWK et accents

korbé a écrit :

normalement, c'est tous des 8.04 mis a jours, sauf le mien, un 8.10.

on utilise tous awk, mais est-il possible, qu'avec la commande awk, on utilise gawk?

Oui !
Pour le voire :

ls -l $(which awk)

-- Lucid Lynx --

Hors ligne

#13 Le 27/11/2008, à 11:20

korbé

Re : Problème AWK et accents

Merci, je regarderai demain (on a congé aujourd'huit XD)

Et pour modifier cette option?


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#14 Le 27/11/2008, à 11:36

Totor

Re : Problème AWK et accents

korbé a écrit :

Merci, je regarderai demain (on a congé aujourd'huit XD)

Et pour modifier cette option?

Ce n'est pas une option mais un lien symbolique.
pour être certain d'utiliser awk, précises le vrai binaire dans ton script qui est normalement /usr/bin/awk.


-- Lucid Lynx --

Hors ligne

#15 Le 27/11/2008, à 11:40

korbé

Re : Problème AWK et accents

ok, merci.

Je te dirai demain si on a trouvé un sollution.


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#16 Le 27/11/2008, à 14:00

Alain.g

Re : Problème AWK et accents

update-alternatives --display awk

ou

ls -l /etc/alternatives/awk

Xubuntu Karmic !

Hors ligne

#17 Le 28/11/2008, à 11:19

korbé

Re : Problème AWK et accents

A la ligne "update-alternatives --display awk":

awk - l'état est auto.
 le lien pointe actuellement sur /usr/bin/gawk
/usr/bin/mawk - priorité 5
 lien secondaire nawk : /usr/bin/mawk
 lien secondaire nawk.1.gz : /usr/share/man/man1/mawk.1.gz
 lien secondaire awk.1.gz : /usr/share/man/man1/mawk.1.gz
/usr/bin/gawk - priorité 10
 lien secondaire nawk : /usr/bin/gawk
 lien secondaire nawk.1.gz : /usr/share/man/man1/gawk.1.gz
 lien secondaire awk.1.gz : /usr/share/man/man1/gawk.1.gz
La « meilleure » version actuelle est /usr/bin/gawk.

Pareil sur la machine ou cela fonctionne, le code du fichier texte à traiter est "ISO-8859"


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#18 Le 01/12/2008, à 10:28

korbé

Re : Problème AWK et accents

Up :d:d:d


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#19 Le 19/01/2009, à 16:15

korbé

Re : Problème AWK et accents

Bon, ben UP, là ça commence à me gonfler ce problème avec AWK.


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#20 Le 10/03/2009, à 22:07

korbé

Re : Problème AWK et accents

Il n'y a vraiment vraiment vraiment vraiment personne?

Par ce que là j'ai re-essayé le srcipte, et il m'ignore les mot avec accents.

Dernière modification par korbé (Le 10/03/2009, à 22:14)


Fais ce que bon te semble, mais ne fais de mal à personne.
Défends toi, mais ne deviens pas ton agresseur.
La force aide la faiblesse, elle ne l'asservit pas.

Hors ligne

#21 Le 14/04/2010, à 22:33

daryn

Re : Problème AWK et accents

essaye de faire un

$ export LANG=C

avant de lancer ton script. C'est probablement un problème de locale.

Hors ligne

#22 Le 15/04/2010, à 00:01

sputnick

Re : Problème AWK et accents

echo élève | mawk '{gsub("\303\250|\303\251","e"); print}'

Edit : BIG UP à korbé pour sa pugnacité : post datant du  Le 26/11/2008, à 12:19 !

\303\250 et \303\251 c'est la représentation octale des caractères.

Dernière modification par sputnick (Le 15/04/2010, à 00:26)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne