Entourer code postal avec sed

Résolu
Bonjour,
Bon j'ai un ptit soucis d'expression régulière, décidement je m'ensortirais jamais !

j'ai ce type de ligne :

'Magasin A',' 25 Av Jean Jaur\'e8s 08000 Charleville M\'e9zi\'e8re','T\'e9l : 01 01 01 01 01'),\


que je vaux changer en :

'Magasin A',' 25 Av Jean Jaur\'e8s ','08000',' Charleville M\'e9zi\'e8re','T\'e9l : 01 01 01 01 01'),\


Grosso modo j'entoure le code postal avec : ','

j'essaie de récupérer le cp avec [0-9][0-9][0-9][0-9][0-9] mais après je bloque...

des idées ?
Configuration: Ibook ^^

2 réponses

  1. Modérateur
    Salut,

    Comme ça?

    ~$ cat plop
    'Magasin A',' 25 Av Jean Jaur\'e8s 08000 Charleville M\'e9zi\'e8re','T\'e9l : 01 01 01 01 01'),\
    ~$ cat plop | sed -r "s/ *([0-9]{5}) */ ','\1',' /"
    'Magasin A',' 25 Av Jean Jaur\'e8s ','08000',' Charleville M\'e9zi\'e8re','T\'e9l : 01 01 01 01 01'),\
    ~$ cat plop | sed "s/ *\([0-9]\{5\}\) */ ','\1',' /"
    'Magasin A',' 25 Av Jean Jaur\'e8s ','08000',' Charleville M\'e9zi\'e8re','T\'e9l : 01 01 01 01 01'),\

    1. oui c'est ça :)
  2. Modérateur
    Salut,

    [tmpfs]$ echo $A
    Magasin A',' 25 Av Jean Jaurès 08000 Charleville Mézière','Tél : 01 01 01 01 01'),\
    
    [tmpfs]$ echo $A | sed "s/ \([0-9]\{5\}\) /','\1','/"
    Magasin A',' 25 Av Jean Jaurès','08000','Charleville Mézière','Tél : 01 01 01 01 01'),\
    
    [tmpfs]$

    ;-))
    1. Modérateur
      ;-)

      En fait on peut faire comme ça, non?
      Pas besoin de capture
      $ cat plop | sed "s/[0-9]\{5\}/','&','/"
      'Magasin A',' 25 Av Jean Jaur\'e8s ','08000',' Charleville M\'e9zi\'e8re','T\'e9l : 01 01 01 01 01'),\

    2. Arf oui c'est ça !
      Merci !
      en fait c'est 5 chiffres à la suite que je ne savait pas dire ! apparement c'est :\{5\}
      Pas trop clair dans la doc :( ccm
    3. Modérateur
      Salut,

      Disons que j'ai juste pris en compte les espaces avant et après au cas où on trouverait une autre chaîne de caractères avec au moins 5 chiffres (comme par exemple un numéro de téléphone sans espaces, ex 0101010101)...
    4. Modérateur
      @lami20jBen voui j'avais vu ;-)

      Donc ta demande est du coup un peu farfelue ;-D