Remplacer chaine de caractère par une autre

[Résolu/Fermé]
Signaler
-
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
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.

3 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 888
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

;-))
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 888
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]$ 
;-))
ca marche !!!! merciiii
Messages postés
3
Date d'inscription
lundi 30 mars 2009
Statut
Membre
Dernière intervention
14 mai 2010

bonjour, svp veuillez m'aider
je veux qu'à chaque fois je trouve un' \ ' le ,remplacer par un '/'
j'utilise php mysql
merci d'avance
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 787
Salut
sed -i.bak 's#\\#/#g' fichier.php