[Bash]Suppression de lignes contenant des mots d'un autre fichier

Suppression de lignes contenant des mots d'un autre fichier [Bash] - Shell/Batch - Programmation

Marsh Posté le 05-10-2006 à 14:35:06    

Bonjour,  
 
Voilà j'ai deux fichiers. L'un contenant des phrases qu'on appelera phrases.txt, l'autres comprenant des mots (voir aussi des phrases) qu'on appelera interdits.txt. En gros voilà ce que je cherche à faire:  
 
Toute les chaines de caractères comprises dans mon fichiers interdits.txt ne doivent pas être dans mon phrases.txt. C'est à dire que dès qu'une ligne de phrases.txt contient un mot ou une phrases de interdits.txt, il faut que cette ligne soit supprimée.  
 
Les deux fichiers sont ordonnées de en colonne, un mot ou une phrase par ligne.  
 
Je cherche à le faire de la façon la plus simple possible notament par sed ou bash. La méthode grep -v semble la plus simple mais je dois me tromper dans la ligne de commande...
 
grep -v interdits.txt\ phrases.txt\ > toto
 
Merci par avance pour votre aide.

Reply

Marsh Posté le 05-10-2006 à 14:35:06   

Reply

Marsh Posté le 06-10-2006 à 10:52:45    

je te propose le shell suivant transf.sh :
 

Code :
  1. #!/bin/ksh
  2. cat interdits.txt | awk '
  3. { print "/" $0 "/ { getline }"}
  4. END { print "{print }"}
  5. ' > interdits.awk
  6. awk -f interdits.awk phrases.txt


 

Reply

Marsh Posté le 06-10-2006 à 15:10:36    

La syntaxe pour la commande grep est la suivante :

grep -v -f interdits.txt phrases.txt > toto


Il y a une petite modification à apporter au script de gloo

#!/bin/ksh
awk '{ print "/" $0 "/ { next }"} END { print "{print }"}' interdits.awk > interdits.awk
awk -f interdits.awk phrases.txt


 
   


---------------
Jean Pierre.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed