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

Fermé
MamsT Messages postés 2 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 24 janvier 2018 - 20 déc. 2017 à 13:54
baladur13 Messages postés 46391 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 23 avril 2024 - 26 déc. 2017 à 17:15
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

2 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
20 déc. 2017 à 15:14
hello
$ echo "VAR in (40,401)" | sed -re "s/40([^0-9])/'40'\1/g" 
VAR in ('40',401)
0
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 déc. 2017 à 07:26
voir la solution de UnGnU au post #2
0
UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
21 déc. 2017 à 07:30
Salut,

Ça ne passera pas non plus, le besoin est différent. A chaque cas sa regex ;-\
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
21 déc. 2017 à 08:04
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 lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
21 déc. 2017 à 08:08
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 lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
20 déc. 2017 à 16:03
Salut,

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


0
l'expression ci dessus marche parfaitement dans mon cas. Merci Merci à tous.
0
baladur13 Messages postés 46391 Date d'inscription mercredi 11 avril 2007 Statut Modérateur Dernière intervention 23 avril 2024 13 217 > MamsT
26 déc. 2017 à 17:15
0