Utlisation AWK

rondin Messages postés 3 Statut Membre -  
rondin Messages postés 3 Statut Membre -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    C'est bizarre ça ;-\

    Tu peux nous afficher la ligne de commande awk que tu emploies s'il te plaît.
    0
  2. rondin Messages postés 3 Statut Membre
     
    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
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
    ;-))
    0
  4. rondin Messages postés 3 Statut Membre
     
    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
    0