Shell expression régulière

Résolu/Fermé
little_red Messages postés 2 Date d'inscription lundi 28 décembre 2009 Statut Membre Dernière intervention 28 décembre 2009 - 28 déc. 2009 à 01:38
little_red Messages postés 2 Date d'inscription lundi 28 décembre 2009 Statut Membre Dernière intervention 28 décembre 2009 - 28 déc. 2009 à 12:30
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

3 réponses

dubcek Messages postés 18728 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 29 mai 2024 5 615
28 déc. 2009 à 06:51
hello
$ echo chat | sed 's/[^a]/-/g'
--a-
0
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
little_red Messages postés 2 Date d'inscription lundi 28 décembre 2009 Statut Membre Dernière intervention 28 décembre 2009
28 déc. 2009 à 12:30
ha merci beaucoup !!!!
0