Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1501 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  besoin d'aide avec la commande sed

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

besoin d'aide avec la commande sed

n°1202843
matt276
Posté le 05-03-2010 à 10:35:57  profilanswer
 

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

mood
Publicité
Posté le 05-03-2010 à 10:35:57  profilanswer
 

n°1202849
wedgeant
Da penguin inside
Posté le 05-03-2010 à 10:44:18  profilanswer
 

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
n°1202850
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 05-03-2010 à 10:45:47  profilanswer
 

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.
n°1202855
wedgeant
Da penguin inside
Posté le 05-03-2010 à 10:51:15  profilanswer
 

[:hahaguy]
 
burn [:wark0]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
n°1202873
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 05-03-2010 à 12:25:24  profilanswer
 

:fou:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1202887
matt276
Posté le 05-03-2010 à 13:59:52  profilanswer
 

çà fonctionne merci

n°1287900
Arkady92
Posté le 17-08-2011 à 19:08:01  profilanswer
 

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  

n°1287945
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 18-08-2011 à 11:48:46  profilanswer
 

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.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  besoin d'aide avec la commande sed

 

Sujets relatifs
Commande sftp pour se connecter à un ordinateur via un autreaide pour serveur linux sur une carte flash
SSH sur le port 80 : routage très spécial (besoin de vos ruses svp !)Linux commande changement partition
Aide sur Filtrage de fichier !commande pour scanner dd avec linux live cd
Comment trouver la resolution d'une vidéo en ligne de commande[BSD][RESOLU] Besoin d'aide sur PF [PFSENSE]
Besoin de conseil avec NagiosBesoin d'aide sur la commande find -exec
Plus de sujets relatifs à : besoin d'aide avec la commande sed


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR