Utlisation AWK

Bonjour,

J'utilise AWK pour extraire dans un fichier d'adresse : exp

34 allée GIACOMETTI

le numéro de rue éventuellement bis /ter.

avec split et substr.

de façon à avoir le format N° de rue, bis/ter, adresse. dans des champs séparés par des virgules

Cela fonctionne, sauf dans le cas d'une adresse comportant une lettre accentuée (voir exemple).

J'utilise linux mdv 2007 powerpack. Est-ce un problème de "charset"? il me semble avoir vu dans un forum qu'il faut utiliser charset=iso 8852-1??? si oui il n'est pas fourni, comment le récupérer et l'intaller.

Merci de l'aide Cordialement rondin
Configuration: Linux Mandriva 2007 powerpack
Firefox 2.0.0.6

4 réponses

  1. D'abord merci de l'intérêt porté à mon problème.

    Voici le CR de la commade "locale":

    $ locale
    LANG=fr_FR.UTF-8
    LC_CTYPE=fr_FR.UTF-8
    LC_NUMERIC=fr_FR.UTF-8
    LC_TIME=fr_FR.UTF-8
    LC_COLLATE=fr_FR.UTF-8
    LC_MONETARY=fr_FR.UTF-8
    LC_MESSAGES=fr_FR.UTF-8
    LC_PAPER=fr_FR.UTF-8
    LC_NAME=fr_FR.UTF-8
    LC_ADDRESS=fr_FR.UTF-8
    LC_TELEPHONE=fr_FR.UTF-8
    LC_MEASUREMENT=fr_FR.UTF-8
    LC_IDENTIFICATION=fr_FR.UTF-8
    LC_ALL=

    J'ai rajouté l'instruction préconisée mais hélas çà ne change rien. Cordialement
    1. Modérateur
      Effectivement tu as l'air d'avoir des soucis avec tes "locale".
      Regarde voir déjà ce que te renvoie la commande :
      locale
      sur ton système.
      Ensuite et sans aucune conviction essaie de rajouter à ton programme "awk" en début de programme l'instruction :
      LC_ALL=fr_FR
      ;-))
      1. Pas de problème voici le shell en partie :

        # extraction N� rue - B/T - champ rue
        gawk '{ FS=","
        if (NR == 1) {entete=$0;print entete >> "ficabst"}
        if (NR >= 2) {
        chp1=$1;chp2=$2;chp3=$3;chp4=$4;chp5=$5;chp6=$6;chp7=$7;chp8=$8;chp9=$9
        # calcul du nb de car de chp8
        nbc=length(chp8);print " nbc: "nbc" chp8 :"chp8
        SEP=" ";x=split(chp8,array,SEP);num=array[1];z=length(num);print " z: "z" x :"x;z=z+2
        # N� de rue existe ? - test de num ..
        if (num >= "1" && num <= "999") {
        ecrit=0;adr=substr(chp8,z);print " z1: "z" nbc1 :"nbc" adr :"adr
        print chp1","chp2","chp3","chp4","chp5","chp6","chp7","num","adr >> "ficabst1" }}
        # print " num :"num" adr :" adr" NR :"NR" chp8 :"chp8
        # Test nb car de y
        et la trace du traitement(cas adresse avec accent):
        nbc: 5 chp8 :1 all�e GIACOMETTI
        z: 1 x :3
        z1: 3 nbc1 :5 adr :all
        et la trace du traitement(cas adresse sans accent):
        nbc: 19 chp8 :10 allee GIACOMETTI
        z: 2 x :3
        z1: 4 nbc1 :19 adr :allee GIACOMETTI
        Merci de l'aide
        1. Modérateur
          Salut,

          C'est bizarre ça ;-\

          Tu peux nous afficher la ligne de commande awk que tu emploies s'il te plaît.