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 :

Script shell pour suppirmer une ligne 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 habitué
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut Script shell pour suppirmer une ligne dans un fichier
    Bonjour la communauté,

    je suis débutant en script shell et je souhaiterais écrire un script me permettant de supprimer des lignes dans un fichier en fonction de la date.

    dans le fichier j'ai des lignes avec des dates commençant pas annéemoisjourheureminuteseconce(AAAAMMJJHHMMSS). et avec comme date passé en paramètre

    je souhaite supprime la ligne correspondante.

    Pourrais avoir un coup de main.

    merci pour vos commentaires et suggestion.

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 651
    Par défaut
    Bonjour,

    sed est fait pour ça.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre habitué
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Par défaut
    comment je l'utilise?

  4. #4
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    Bonjour

    comment je l'utilise?
    Avec bonne humeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 'script' fichier_entree >fichier_sortie
    Quand tu seras sûr d'obtenir le résultat qui te convient, tu pourras utiliser l'option -i pour écraser le fichier d'entrée.

    Internet regorge de tutoriels pour sed.

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 347
    Par défaut
    Bonjour,

    2 façons de faire avec ton sed:

    1) On supprime la/les ligne(s) que l'on recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e '/pattern_recherché/d' fichier
    2) On n'affiche que les lignes qui ne correspondent pas a la recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -n -e '/pattern_recherché/!p' fichier
    ATTENTION: les exemples donnés modifient directement le fichier (option -i)

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 287
    Par défaut
    S'il s'agit effectivement d'un simple filtre, la commande grep peut suffire.

  7. #7
    Expert confirmé 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 : 48
    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
    Par défaut
    Citation Envoyé par debogger Voir le message
    comment je l'utilise?
    avec prudence

    parce que tu peux faire une mauvaise edition
    comme indiqué par notre ami la bonne methode est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 'script' fichier_entree >fichier_sortie
    pour ne pas peter le fichier source

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    francois@baal:~$ cd /tmp
    2015francois@baal:/tmp$ cat > /tmp/toto
    201501 FDSFS
    201502 fdsfsf
    201504 FSDFSD
    ^D
    francois@baal:/tmp$ pattern=201504
    francois@baal:/tmp$ sed '/'$pattern'/ d' /tmp/toto > /tmp/titi
    francois@baal:/tmp$ cat /tmp/titi
    201501 FDSFS
    201502 fdsfsf
     
    francois@baal:/tmp$ rm /tmp/t[oi]t[oi] ; unset pattern 
    francois@baal:/tmp$
    un exemple simple....

    /pattern/ d = delete line containing pattern

    y'a des tas de tuto sur sed ... je te laisse fouiller un peu

    notes que je ferme et réouvre les quotes autour de la variable du shell pour pouvoir l'interpréter dans sed

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par debogger Voir le message
    comment je l'utilise?
    Tu peux, par exemple, reprendre l'intitulé de ta question, ajouter "sed", ce qui donne "sed supprimer une ligne dans un fichier" et balancer le tout à un moteur de recherche (<- cliquer ici!)

    Ensuite tu regardes la première proposition ou d'autres...

Discussions similaires

  1. commande pour supprimer une ligne dans un fichier
    Par bomonde dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 27/09/2010, 10h58
  2. script shell pour remplacer un mot dans un fichier
    Par MSM_007 dans le forum Linux
    Réponses: 2
    Dernier message: 17/06/2010, 20h37
  3. Script pour insérer une ligne dans un fichier csv
    Par StéphanieB. dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 05/01/2010, 11h19
  4. code java pour modifier une ligne dans un fichier txt
    Par pacomou dans le forum Général Java
    Réponses: 1
    Dernier message: 03/09/2009, 15h23
  5. Réponses: 3
    Dernier message: 07/08/2006, 11h25

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