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 pour supprimer contenu d'un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Par défaut Script pour supprimer contenu d'un fichier
    Bonjour tout le monde.

    J'ai un fichier qui contient des entrées du type:

    define host{
    use generic-host
    host_name nomduhost
    address xxx.xxx.xxx.xxx
    }

    Je veux écrire un script bash qui identifie la présence d'un paragraphe du type de celui exposé ci-dessus et le supprime si le nom "nomduhost" correspond à celui que je recherche.

    Je me suis dit que la commande sed pourrait éventuellement me permettre de résoudre ma problématique.
    J'arrive facilement à trouver la ligne host_name nomduhost et à la supprimer, mais je ne sais pas comment m'y prendre pour supprimer celles qu'il y a avant et après.

    Quelqu'un aurait-il la gentillesse de m'aider?

    Merci beaucoup d'avance à ceux qui me répondront!

  2. #2
    Membre éprouvé Avatar de Levi59
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2011
    Messages : 58
    Par défaut
    Si la forme est toujours la même, avec 5 lignes à supprimer et le motif au centre, le plus simple serait de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    NUM=$(grep -n "nomduhost" fichier.txt)
    NUM=${NUM%%:*}
    sed -i ''$(( ${NUM} - 2 ))','$(( ${NUM} + 2 ))'d' fichier.txt

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i.bak '/define/{N;N;N;N;/nomduhost/d}' fichier

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Ou avec "ed" aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ed -s plop <<<$'/nomduhost/-2,//+2d\nw'

Discussions similaires

  1. Shell script pour compter le nombre de fichiers par extension
    Par andress33 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 30/03/2015, 01h26
  2. [MySQL] [mysqli] Script pour transfert massif de données (fichier excel)
    Par floctc dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/04/2009, 15h26
  3. script pour Outlook 2002 rattachement auto fichiers pst
    Par jlfprofoto dans le forum VBScript
    Réponses: 0
    Dernier message: 08/12/2008, 15h03
  4. Réponses: 2
    Dernier message: 25/06/2008, 09h58
  5. Réponses: 2
    Dernier message: 20/03/2006, 20h56

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