IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] Suppression de mots


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut [langage] Suppression de mots
    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. Je saurai comment supprimer un mot dans un fichiers via sed, mais je n'arrive pas à supprimer un mot d'un fichier contenu dans un autre fichier.

    Merci par avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour.

    Tu es sur un forum Perl ici, nous ne pouvons (ou en tout cas je ne peux) pas te fournir de solution avec sed ou bash. Pour une soluion bash, les forums Linux seront certainement plus appropriés. Pour une solution sed, je ne vois pas vraiment où cela aurait sa place.

    En revanche, on peux t'aider à trouver une solution Perl. Cela t'intérese-t-il ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Une solution Perl me conviendrait totalement

    Désolé pour le post en section Perl mais je n'ai pas trouvé de section bash sur les forums de developpez.com.

  4. #4
    Membre émérite
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Par défaut
    Voici quelque chose de très simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    use strict;
    use warnings;
     
    open(my $interdits_fd, '<', 'interdits.txt');
    chomp(my @interdits = <$interdits_fd>);
    close($interdits_fd);
     
    open(my $phrases_fd, '<', 'phrases.txt');
     
    while (my $line = <$phrases_fd>) {
      foreach my $interdit (@interdits) {
        $line =~ s/\b$interdit\b/[CENSURÉ]/gi;
      }
     
      print $line;
    }

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour ce script, mais (il faut bien un "mais"...)

    Le script à l'air de tourner dans le vide....

    Bon d'accord il y a 13 000 mots dans interdits.txt et 880 000 phrases dans phrases.txt mais je l'ai laissé tournée pendant 16h et le script est toujours en cours d'éxécution ....

    Boucle infinie ?

  6. #6
    Membre expérimenté Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Par défaut
    normallement le print $line; devrait t'afficher les lignes modifiées?

    si tu n'as pas d'affichage, ça coince quelquepart

Discussions similaires

  1. Suppression de mots dans une chaîne
    Par psychomatt dans le forum Langage
    Réponses: 7
    Dernier message: 06/08/2004, 15h34
  2. Réponses: 4
    Dernier message: 02/07/2004, 19h14
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. Réponses: 6
    Dernier message: 04/03/2004, 09h35
  5. [langage] Reconnaissance de mots
    Par Flo. dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2002, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo