Forum Programmation.shell supprimer des accents (script bash)

Posté par  .
Étiquettes : aucune
0
4
nov.
2010

Bonjour à tous,
C'est encore moi voilà je cherche à supprimer les accents dans un de mes scripts en bash:

[...]
for image in *[jJ][pP][gG] ;
do
width=$(identify -format '%w' "$image")
height=$(identify -format '%h' "$image")
ratio=$(echo "scale=2; $height / $width" |bc)
echo $ratio
if [ $ratio '<' .70 ]
then
image="${image##*/}"
[u]nv_nom=$(printf '%s_%s_%s\n' ${rep} ${jourmois} $image)[/u]
convert "$image" -resize 601x400 -strip -interlace line -quality 80 "$NV_DOSSIER/$nv_nom"
composite -gravity center /home/sacha/Images/cadre.png "$NV_DOSSIER/$nv_nom" "$NV_DOSSIER/$nv_nom"
else
nv_nom=$(printf 'thai_prod_%s_%s.jpg\n' ${rep} ${jourmois})

convert "$image" -resize 200x150 -strip -interlace line -quality 80 "$NV_DOSSIER/$nv_nom"
composite -gravity center /home/Images/cadremini.png "$NV_DOSSIER/$nv_nom" "$NV_DOSSIER/$nv_nom"
fi
done
[...]


Je cherche donc à supprimer les accents dans la variable nv_nom

J'ai essayer avec tr mais sans succès

Merco à vous
  • # sed ?

    Posté par  . Évalué à 2.

    Peut être que ça marcheras mieux avec sed :
    sed -e 'y/éêèàï/eeeai/'

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

    • [^] # Re: sed ?

      Posté par  . Évalué à 1.

      J'ai tenté
      image="${image##*/}"
      nv_nom=$(printf '%s_%s_%s\n' ${rep} ${jourmois} $image )ed
      nv_nom=$nv_nom | sed -e 'y/éêèàï/eeeai/'
      echo $nv_nom
      
      ou
      image="${image##*/}"
      nv_nom=$(printf '%s_%s_%s\n' ${rep} ${jourmois} $image )
      nv_nom=`echo " $nv_nom" |  tr '[A-Z]' '[a-z]' |    tr '[àâäéèêëîïôöùûü]' '[aaaeeeeiioouuu]'`
      echo $nv_nom
      
      Mais ca fonctionne pas.
      • [^] # Re: sed ?

        Posté par  . Évalué à 3.

        En postant ma réponse j'ai vu que dans mon code j'avais des problème d'accent.
        Et c'est comme cela que j'ai trouver la soluce.
        mon fichier etait encodé en iso, je l'ai passé en UTF8, récris tout les accent et c'est bon.
  • # En python

    Posté par  . Évalué à 2.

    >>> import unicodedata
    >>> str(''.join(map(lambda c: c if ord(c) < 128 else '', unicodedata.normalize('NFD', u'Comment ça va Gérard ?'))))
    'Comment ca va Gerard ?'

    Knowing the syntax of Java does not make someone a software engineer.

    • [^] # Re: En python

      Posté par  . Évalué à 2.

      C'est mal de faire croire que le python peut ressembler à du perl !

      Dans ce cas la normalisation NKFD plutôt que NFD semble meilleure (moins de caractères non ASCII dans la sortie) du mois d'après http://unicode.org/reports/tr15/
    • [^] # Re: En python

      Posté par  . Évalué à 2.

      Un vrai one-liner (et sans le map):
      __import__('unicodedata').normalize('NFD', u'Comment ça va Gérard ?').encode('ascii', 'ignore')

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.