Shell expression régulière

Résolu
little_red Messages postés 2 Date d'inscription   Statut Membre -  
little_red Messages postés 2 Date d'inscription   Statut Membre -
Bonjour,
voila un petit problème en shell : je cherche à remplacer dans une chaine tous les caractères sauf certains. Je m'explique : si j'ai 'chat' je souhaite remplacer tous les caractères sauf 'a' par un motif quelconque ( '-' par exemple).

J'ai essayé des choses du genre 'tr' ou 'sed' avec des expressions regulière avec ^a.. mais je ne comprend pas. Mon dernier essai est :

echo chat|tr "[^a]" "-" et cela me retourne ch-t. Je voudrais l'inverse !

Pouvez vous m'aider ?

Merci
Configuration: Windows 7
Firefox 3.5.6

3 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    $ echo chat | sed 's/[^a]/-/g'
    --a-
    0
  2. lami20j
     
    Salut,

    Avec tr
    $ echo chat| tr '[b-z]' '-'
    --a-


    A savoir que tr n'utilise pas des regex. Si les regex s'impose alors sed c'est mieux que tr
    0
  3. little_red Messages postés 2 Date d'inscription   Statut Membre
     
    ha merci beaucoup !!!!
    0