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

Shell et commandes GNU Discussion :

Supprime une occurence dans un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 108
    Par défaut Supprime une occurence dans un fichier
    bonjour,

    j'ecris un shell dans lequel je veux supprime toutes les occurences de
    "toto" qui se trouve ds le fichier "monfic.txt" comment faut il faire
    merci d'avance

  2. #2
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 3
    Par défaut
    Je ne sais pas trop mais je pense qu'il faut se servir de la ch'tite commande GREP.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 108
    Par défaut
    avec grep tu peux le localiser le mot "toto" mais pas le supprimer

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Sisi !! avec grep -v !

    En fait tu devrais pouvoir le faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat tonfichier | grep -v toto > fichiersortie
    Tiens nous au courant ;)

  5. #5
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 3
    Par défaut
    perso je viens d'essayer et ça marche a merveille...sauf que ça vire toute la ligne en effet...

  6. #6
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Par défaut
    Citation Envoyé par getupa
    Sisi !! avec grep -v !

    En fait tu devrais pouvoir le faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat tonfichier | grep -v toto > fichiersortie
    Tiens nous au courant
    Hum ta solution enlève toutes les lignes qui contiennent toto, et non pas, toutes les occurences de toto.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat tonfichier | sed 's/toto//g' > fichiersortie
    ça, ça enlève toutes les chaînes de caractères toto.
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Citation Envoyé par ggnore
    Hum ta solution enlève toutes les lignes qui contiennent toto, et non pas, toutes les occurences de toto.
    C'est exact ! A vrai dire je l'avais compris comme ça ;)

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Décembre 2005
    Messages : 108
    Par défaut
    Je viens de faire :

    cat fic.txt | grep -v toto >> fic.txt

    sa a planté c'est recursif
    moi ce que je veux c'est qu'il me supprime toutes les lignes ou le mot toto apparait dans fic.txt

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Par défaut
    Normal !!! Il faut que tu le redirige dans un autre fichier que celui qui est lu (relit l'exemple !). Tu n'auras plus qu'à le renommer après !

    Pour supprimer toutes les lignes qui contiennes toto, il faut utiliser la solution avec grep -v. La solution avec sed supprime toutes les occurences du mot toto, mais pas les lignes.

  10. #10
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Sinon, si l'on veut vraiment travailler "sur place", il faut faire appel à Perl plutôt que sed ou grep.

    La solution comme sed mais avec Perl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/toto//g' fic.txt
    La solution comme grep mais avec Perl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/.*toto.*\n//g' fic.txt

    Si tu n'as pas d'impératif de travail sur place et que tu peux créer un fichier temporaire (à détruire après), les solutions évoquées avec sed (le mot seulement) ou avec grep (toute la ligne) sont très bonnes.

    On peut juste préciser davantage pour ne supprimer que le mot indiqué, et pas les mots contenant le mot ... afin d'éviter que de "gros rototos" ne se transforme en "gros ros" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -pi -e 's/(^|\s)toto($|\s)/$1$2/g' fic.txt
    Mais ça commence à compliquer l'expression

Discussions similaires

  1. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  2. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  3. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43
  4. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 14h45
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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