|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2009 Messages : 1 ![]() |
Bonjour,
J'ai un fichier 1 où j'ai par exemple: mot1 mot2 mot3 Je souhaite faire un traitement sur un fichier 2 où je souhaite: - remplacer mot1 par UnAutreMot dans la chaine: "salut... mot1 ... toto" - supprimer les lignes qui contiennent: "bonjour... mot2... au revoir" et "bonjour... mot3... coucou" les chaines entourant mot2 et mot3 peuvent etre differentes. Avez-vous une idée de comment le faire? j'ai essayé d'utiliser awk ou sed mais j'ai pas su comment ! Voici un exemple: fichier AVANT: salut... mot1 ... toto bonjour... mot2... au revoir bonjour... mot3... coucou" fichier APRES: salut... UnAutreMot ... toto mot1, mot2 et mot3 doivent etre lus d'un autre fichier Merci pour votre aide |
|
|
00
|
|
|
#2 | ||||||
|
Membre Expert
![]() |
Mmmh, j'ai compris que tu voulais :
1. partir d'un fichier fic1 contenant 3 mots séparés par un espace (mot1, mot2 et mot3) 2. modifier un fichier fic2 dans lequel : 2.1. toute occurrence de mot1 est remplacée par UnAutreMot 2.2. toute ligne comportant mot2 est supprimée 2.3. toute ligne comportant mot3 est supprimée Si j'ai bon, et que tu veux le faire en une seule commande, alors tu peux bricoler un truc du style : Code :
Explications (si besoin ?): 1. une commande sed : Code :
sed 's/'`cut -d' ' -f1 motcle`'/UnAutreMot/g;/'`cut -d' ' -f2 motcle`'/d;/'`cut -d' ' -f3 motcle`'/d' test Code :
s/'`cut -d' ' -f1 motcle`'/UnAutreMot/g;/'`cut -d' ' -f2 motcle`'/d;/'`cut -d' ' -f3 motcle`'/d Code :
Code :
`...` permet d'utiliser une commande dans une autre, ici, ces commandes récupèrent chaque mot de ton premier fichier pour l'isoler. Bien sur, la même chose serait possible en plus lisible avec un script: commencer par récupérer la liste de mots dans des variables avec cut ou awk ou autre, puis faire la commande sed avec ces variables, ce qui est plus facile à lire ! Sinon, tu peux aussi le faire assez simplement en Perl... Dernière modification par Alek-C ; 12/06/2009 à 12h47. |
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com