besoin d'aide avec la commande sed

besoin d'aide avec la commande sed - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 05-03-2010 à 10:35:57    

Bonjour,
 
Je cherche à remplacer le caractère . par , dans un fichier texte :
sed -i 's/./,/g' /monfichier.txt
 
Le problème est que l'ensemble des caractères du fichier sont remplacé par des ,
 
Malgré plusieurs essais je ne m'en sort pas.
Pouvez vous m'aider ?
 
Merci

Reply

Marsh Posté le 05-03-2010 à 10:35:57   

Reply

Marsh Posté le 05-03-2010 à 10:44:18    

sed -i 's@\.@,@g' fichier


le "." est un token et s'il n'est pas échappé ta commande est interprétée comme "remplacer tous les caractères par des ,"


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 05-03-2010 à 10:45:47    

Les expressions utilisent quelques caractères speciaux...
 
s/a/b  remplacera bien les lettres a par des b, mais . désigne "tous les caractères possibles". Par exemple
s/a.c/xxx remplacera abc par xxx, azc par xxx, a8c par xxx...
 
Si tu veux désigner le caractère '.', protège le par un \ :
s/\./,
 
Si les /\/\/\ te gênent, sed peut utiliser n'importe quoi comme délimiteur, tu peux donc écrire aussi :
s_\._,
ou
s@\.@,


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 05-03-2010 à 10:51:15    

[:hahaguy]
 
burn [:wark0]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 05-03-2010 à 12:25:24    

:fou:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 05-03-2010 à 13:59:52    

çà fonctionne merci

Reply

Marsh Posté le 17-08-2011 à 19:08:01    

Bonsoir,
 
J'ai besoin d'un coup de pouce sur la commande sed afin de ne pas interpréter la chaîne de substitution que je veux passer.
 
Je m'explique : je dois rajouter en début de ligne une chaîne de caractère si je trouve une chaîne précise :  
 
log.txt
 
=============================
INFO START Begin Import
=============================
 
=============================
OK Import successful
=============================
 
sed '/'"OK"'/ s/.*/# &/' log.txt  me donne un résultat correct :  
 
=============================
INFO START Begin Import
=============================
 
=============================
# OK Import successful
=============================
 
Sauf qu'à la place du # je souhaite insérer une balise html </font>.
 
Et Bingo, ma commande me retourne un "Function cannot be parsed" du fait qu'il essaye d’interpréter ma balise. J'ai testé des / \ " ' pour lui signifier de ne pas interpréter mais sans résultat.
 
Aussi, je suis preneur d'un coup de main
 
Merci  

Reply

Marsh Posté le 18-08-2011 à 11:48:46    

Arkady92 a écrit :

Bonsoir,
 
J'ai besoin d'un coup de pouce sur la commande sed afin de ne pas interpréter la chaîne de substitution que je veux passer.
 
Je m'explique : je dois rajouter en début de ligne une chaîne de caractère si je trouve une chaîne précise :  
 
log.txt
 
=============================
INFO START Begin Import
=============================
 
=============================
OK Import successful
=============================
 
sed '/'"OK"'/ s/.*/# &/' log.txt  me donne un résultat correct :  
 
=============================
INFO START Begin Import
=============================
 
=============================
# OK Import successful
=============================
 
Sauf qu'à la place du # je souhaite insérer une balise html </font>.
 
Et Bingo, ma commande me retourne un "Function cannot be parsed" du fait qu'il essaye d’interpréter ma balise. J'ai testé des / \ " ' pour lui signifier de ne pas interpréter mais sans résultat.
 
Aussi, je suis preneur d'un coup de main
 
Merci  


 
Soit tu changes de délimiteur pour utiliser un truc moins fréquent que /, du genre |
    s|.*|# &|
 
Soit en effet tu protèges en mettant <\/font> au lieu de </font> (mais à chaque "expansion" tu devras penser à protéger, s/toto/\/tutu/ va marcher mais s/toto/$XXX avec XXX contenant \/tutu ne marchera pas, tu auras déjà perdu le \ à l'expansion de $XXX, avant d'arriver dans sed donc)


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed