Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2007, 00h47   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2006
Messages : 51
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 51
Points : 14
Points : 14
Par défaut remplacer plusieurs mots par un seul mot

Bonjour,

J ai plusieurs mots a remplacer par un meme mot. Ces mots ont ne souschaine en commun.

exemple:

dans mon fichier file.txt j ai :

Code :
1
2
3
4
toto.tata blabla
tata tete
tutu
titi
J aimerai bien que les mots ayant le mot tata soient remplacer par tyty. ce qui donnera

Code :
1
2
3
4
tyty blabla
tyty tete
tutu
titi
Voila en gros ce que je veux faire .

Voici la commande :
Code :
sed -e 's/ tata\.\* /tyty /g' file.txt > file1.txt
J ai l impression que tata* $ n est pas interpreter comme etant un expression mais plutot comme une chaine quelconque ...


Merci de votre aide.
nivose110 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2007, 09h40   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Piège "classique", tu confonds les expressions régulières et l'expansion du shell

Avec une expression régulière l'* signifie une ou plusieurs répétition du caractère qui le précède.

En plus tu déspécialise ton . et ton * donc tu cherche une chaine tata.* précédé d'un espace et suivit d'un espace ( bye bye le début ou fin de ligne )


Voila l'expression régulière qui ferait le travail

sed -e 's/[^ ]*tata[^ ]*/tyty/g'
becket est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h54.


 
 
 
 
Partenaires

Hébergement Web