besoin d'aide avec la commande sed - Codes et scripts - Linux et OS Alternatifs
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 ,"
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@\.@,
Marsh Posté le 05-03-2010 à 10:51:15
burn
Marsh Posté le 05-03-2010 à 12:25:24
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
Marsh Posté le 18-08-2011 à 11:48:46
Arkady92 a écrit : Bonsoir, |
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)
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