Remplacer tous les nombres 40 par '40' avec sed ou autres.

MamsT Messages postés 3 Statut Membre -  
baladur13 Messages postés 50016 Statut Modérateur -
Bonjour,
J'ai besoin de votre aide svp!
En fait je souhaiterai dans un programme remplacer tous les nombres 40 par '40' avec sed sous unix.
J'ai essayé ça:
$ echo "VAR in (40,401)" | /opt/freeware/bin/sed -e "s/40/'40'/g"
Résultat: VAR in ('40','40'1)
Problème, il prend en compte le 401 aussi en me prenant le '40' du nombre 401, alors qu'il est censé rien faire sur ce nombre. en gros je veux un résultat de ce type ('40', 401). Pourriez m'aider svp sur ce point. ça commence à m'embêter grave ;-).
PS: le nombre 401 pourrait bien être un autre nombre 4085, 2000, 4501,85406 etc...
Merci pour votre aide.

Cordialement
A voir également:

2 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
$ echo "VAR in (40,401)" | sed -re "s/40([^0-9])/'40'\1/g" 
VAR in ('40',401)
0
MamsT
 
Merci beaucoup dubcek, cela marche bien. j'ai juste un petit soucis quand je mets par exemple :
$ echo "VAR=A40;" | sed -re "s/40([^0-9a-z'\"])/'40'\1/gi"
VAR=A'40';
Comme vous pouvez le constater, il me sort A'40'; il prend en compte le 40 de la chaine, alors qu'en réalité j'attendais d'avoir A40;
En tout cas Merci Beaucoup pour votre aide. c'est super sympa.
Je débute sur unix donc desolé si je vous embête sur le sujet.

Bien à vous.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
voir la solution de UnGnU au post #2
0
UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention   158 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
Salut,

Ça ne passera pas non plus, le besoin est différent. A chaque cas sa regex ;-\
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
ca marche, non ?
$  echo "VAR in (a40, 40 401,1402,1040)" | sed -re "s/\b40\b/'&'/g"
VAR in (a40, '40' 401,1402,1040)
0
UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention   158 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
Là oui, mais pas avec
VAR=A40;
vu qu'il attend
VAR='A40';
en sortie ;-(

D'où ma réflexion : à chaque cas sa regex ;-)
0
UnGnU Messages postés 1158 Date d'inscription   Statut Contributeur Dernière intervention   158
 
Salut,

$ echo "VAR in (40,401,1402,1040)" | sed -re "s/\b40\b/'&'/g"
VAR in ('40',401,1402,1040)


0
MamsT
 
l'expression ci dessus marche parfaitement dans mon cas. Merci Merci à tous.
0
baladur13 Messages postés 50016 Statut Modérateur 13 704 > MamsT
 
0