Remplacer chaine de caractère par une autre

Résolu/Fermé
youpi - 20 mai 2008 à 18:34
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 1 avril 2009 à 13:58
Bonjour,

Je voudrais parcourir un texte et y remplacer certaines chaines de caractères par d'autres.

Je sais qu'on pourrait écrire le code en C facilement, mais je me demandais s'il y avait une fonction prête prédéfinie.

J'ai pensé à introduire la commande sed, mais elle traite les données lignes par lignes, alors que moi je veux que mon code aille chercher les chaines de caractères dans un texte, et meme au milieu des mots.

Quelqu'un sait s'il y a une option à rajouter à sed pour qu'elle fasse ce que je veux, ou connait peut etre une autre commande qui pourrait me servir?

Merci d'avance pour votre aide.
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 mai 2008 à 18:50
Salut,

J'ai pensé à introduire la commande sed, mais elle traite les données lignes par lignes
Elle fait ça très bien normalement

Donne un exemple précis de ce que tu veux exactement :
Avant => Après

;-))
0
Je voudrais remplacer =E9 par "é" par exemple dans tout un texte qui se trouve dans un fichier. Pour avoir, par exemple "Aujourd'hui j'ai mangé épicé" a la place de "Aujourd'hui j'ai mang=E9 =E9pic=E9" au milieu du texte.

J'ai tapé la commande sed -e "s/=E9/é/g" < monfichier > fich.tmp && mv -f fich.tmp monfichier (un truc du genre),

Mais ca ne marche pas .Et quand j'ai tapé seulement =E9 dans une ligne du fichier, sed l'a bien changé en é.

J'en ai deduit que ca lit toute la ligne, ca ne va pas chercher au milieu des mots.

Merci pour ton jipicy
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 894
20 mai 2008 à 19:12
Tiens voilà un exemple qui modifie le fichier en place avec l'option "-i" (il faut avoir une version de sed supérieure 4.0.5), sans passer par un fichier temporaire :
[tmpfs]$ cat monfichier
Aujourd'hui j'ai mang=E9 =E9pic=E9
Hier aussi j'ai mang=E9 =E9pic=E9
Et sûrement que demain aussi je mangerai =E9pic=E9
Mais en g=E9n=E9ral je ne mange jamais =E9pic=E9

[tmpfs]$ sed 's/=E9/é/g' monfichier
Aujourd'hui j'ai mangé épicé
Hier aussi j'ai mangé épicé
Et sûrement que demain aussi je mangerai épicé
Mais en général je ne mange jamais épicé

[tmpfs]$ sed -i.bak 's/=E9/é/g' monfichier     # modification sur place

[tmpfs]$ cat monfichier
Aujourd'hui j'ai mangé épicé
Hier aussi j'ai mangé épicé
Et sûrement que demain aussi je mangerai épicé
Mais en général je ne mange jamais épicé

[tmpfs]$ 
;-))
0
ca marche !!!! merciiii
0
mayouta8 Messages postés 3 Date d'inscription lundi 30 mars 2009 Statut Membre Dernière intervention 14 mai 2010
1 avril 2009 à 13:26
bonjour, svp veuillez m'aider
je veux qu'à chaque fois je trouve un' \ ' le ,remplacer par un '/'
j'utilise php mysql
merci d'avance
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
1 avril 2009 à 13:58
Salut
sed -i.bak 's#\\#/#g' fichier.php
0