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. Modérateur
    Salut,

    C'est bizarre ça ;-\

    Tu peux nous afficher la ligne de commande awk que tu emploies s'il te plaît.
    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
        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. 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