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 26/01/2012, 11h57   #1
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 261
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 261
Points : 2 582
Points : 2 582
Par défaut Rechercher plusieurs mots dans un fichier avec sed

Bonjour,
Avec sed j'arrive très bien à rechercher/remplacer un mot par un autre. Mais savez vous s'il est possible, non pas de remplacer toutes les occurences, mais d'avoir 2 mots à chercher qui seront remplacés par 2 valeurs respectives. Ce dans la même commande. Par exemple voila mon fichier en entrée :
Code :
1
2
 
toto mange une valeur1 avec du valeur2
Valeur de remplacement :
Code :
pattern_a_remplacer_par_valeur1 et pattern_a_remplacer_par_valeur2
.
Et donc en sortie du fichier je veux avoir :
Code :
1
2
 
toto mange une pattern_a_remplacer_par_valeur1 avec du pattern_a_remplacer_par_valeur2
Auriez vous idée svp?
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 12h12   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
1
2
3
4
$ echo "toto mange une valeur1 avec du valeur2" | sed 's/valeur1/tartine/;s/valeur2/chocolat/'
toto mange une tartine avec du chocolat
 
$
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h17   #3
Expert Confirmé
 
Homme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 2 261
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 2 261
Points : 2 582
Points : 2 582
Citation:
Envoyé par zipe31 Voir le message
Salut,

Code :
1
2
3
4
$ echo "toto mange une valeur1 avec du valeur2" | sed 's/valeur1/tartine/;s/valeur2/chocolat/'
toto mange une tartine avec du chocolat
 
$
Good . Mais en attendant une solution, j'ai dû tester avec le bon vieux utilitaire awk, qui marchait aussi:
Code :
awk -F "=" '{gsub("'"$MODELE_1"'","'"$VAR_ENV_1"'",$2);gsub("'"$MODELE_2"'","'"$VAR_ENV_2"'",$2);print $1"="$2}' fichPropModele.txt > fichPropDefinitif.txt
DevServlet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h33   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 545
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 545
Points : 7 768
Points : 7 768
Citation:
Envoyé par DevServlet Voir le message
Good . Mais en attendant une solution, j'ai dû tester avec le bon vieux utilitaire awk, qui marchait aussi:
Code :
awk -F "=" '{gsub("'"$MODELE_1"'","'"$VAR_ENV_1"'",$2);gsub("'"$MODELE_2"'","'"$VAR_ENV_2"'",$2);print $1"="$2}' fichPropModele.txt > fichPropDefinitif.txt
l'utilisation des variables dans sed fonctionnent grosso modo pareil en faisant attention aux quotes

Code :
1
2
 
echo toto | sed "s/toto/"$newvalue"/"
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2012, 14h40   #5
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Citation:
Envoyé par frp31 Voir le message
l'utilisation des variables dans sed fonctionnent grosso modo pareil en faisant attention aux quotes

Code :
1
2
 
echo toto | sed "s/toto/"$newvalue"/"
Euh... si tu entoures l'expression avec des quotes doubles, pas la peine de sortir en répétant les quotes :
Code :
 sed "s/toto/${newvalue}/"
Par contre si tu entoures l'expression de quotes simples, là oui il faut sortir de l'expression, protéger sa variable et revenir dans l'expression :
Code :
 sed 's/toto/'"${newvalue}"'/'
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h00.


 
 
 
 
Partenaires

Hébergement Web