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 :

problème pour supprimer des lignes d'un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut problème pour supprimer des lignes d'un fichier
    Bonjour,

    J'ai une ligne commande qui devrait normalement me supprimer des lignes dans un fichier mais ca ne marche pas.

    je l'ai faites en sed et en shell mais ca fait toujours la même chose à savoir que ca supprime toutes les lignes du fichier.


    j'ai un fichier qui contient 2 lignes :
    fic1
    fic2

    Ce que j'aimerai faire c'est supprimer par exemple la ligne fic2 dans mon fichier

    J'ai script qui contient les 2 lignes de commandes suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed '/fic2/d' fichier.txt > fichier.txt
    en gros je voudrais envoyer le résultat de cette commande dans mon fichier.txt qui devrai normalement contenir plus que fic1

    C'est la que ca merde. Quand j'ouvre mon fichier il est vide .

    de même lorsque j'effectue la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    grep -v fic2 fichier.txt > fichier.txt
    Je ne comprend pas pourquoi le fichir est vide alors qu'il devrai contenir fic1.

    Merci à ceux qui m'aideront.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 165
    Points : 90
    Points
    90
    Par défaut
    Salut,

    et si tu ajoutes le chemin du répertoire qui contient ton fichier.txt ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd Repertoire
    sed '/fic2/d' fichier.txt > fichier.txt

  3. #3
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    Ça dépend de la version de ton sed

    Avec le sed du gnu, qui reconnaît l'option -i, la bonne syntaxe est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/fic2/d' fichier.txt

    Avec le sed, qui ne reconnaît l'option -i, tu dois passer par un ficher intermédiaire (tmp).
    La bonne syntaxe est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/fic2/d' fichier.txt > tmp
    mv tmp fichier.txt

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut
    la solution avec sed -i était la bonne je te remerci.

    J'ai encore une question à propos d'un script que je suis en train de réaliser.

    J'ai toujours mon fichier mais cette fois ci j'ai un répertoire suivi des fichiers qu'il contient.

    Par exemple :

    fic1
    fic2
    rep1
    Fic1DuRep1 Fic2DuRep1 ...
    fic4
    fic5
    rep2
    Fic1DuRep2 Fic2DuRep2 ...

    Ce que j'aimerai faire dans mon script c'est qu'il liste les fichiers (pas tres compliqué) mais aussi lorsqu'il voit un répertoire il devra aller lister également tous les fichiers de ce répertoire

    Voila j espere avoir été assez clair et encore merci pour votre aide et pour ceux qui m'aideront ^^.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut
    je pense avoir trouvé une solutioon à mon problème seulement autre problème est apparu ^^.

    Si jamais il y a d autres répertoires dans mon répertoire il faut refaire la même chose ^^.

    Donc il faut une fonction récursive mais alors laca devient un ptiu peut car une fonction récursive en shell ou autre je ne sais pas trop comment m'y prendre dans mon cas ^^.

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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 : 5 196
    Points : 12 262
    Points
    12 262
    Par défaut
    Citation Envoyé par NicoO_O Voir le message
    je pense avoir trouvé une solutioon à mon problème seulement autre problème est apparu ^^.

    Si jamais il y a d autres répertoires dans mon répertoire il faut refaire la même chose ^^.

    Donc il faut une fonction récursive mais alors laca devient un ptiu peut car une fonction récursive en shell ou autre je ne sais pas trop comment m'y prendre dans mon cas ^^.
    find ./ -type f -exec sed .............. {} \;

    -type f permet de ne traiter que les fichiers

Discussions similaires

  1. [XL-2003] problème pour supprimer des lignes
    Par JulienLeno dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/09/2011, 13h43
  2. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  3. [CSV] Ajouter et supprimer des ligne dans un fichier CSV
    Par gpsevasion dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2007, 17h00
  4. Réponses: 1
    Dernier message: 05/10/2006, 09h56
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

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