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 :

[AWK ou SED] Suppression de lignes


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Mars 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [AWK ou SED] Suppression de lignes
    Hello

    Je galère un peu avec mes commandes awk et sed sur un fichier.
    Je voudrais supprimer les lignes qui commencent par une suite de mot et ne sont pas suivi par une autre ligne bien spécifique.

    Pour etre plus clair, un exemple:
    J'ai un fichier qui se compose comme suit


    # OPERATIONS du 11/05
    SITE 1
    SITE 2
    SITE 3
    traitement down

    # OPERATIONS du 12/05
    SITE 1
    traitement down
    SITE 2
    SITE 3
    traitement down
    SITE 4
    SITE 5
    traitement down

    Je voudrais supprimer les lignes qui commencent par SITE mais qui ne sont pas suivi par une ligne "traitement down"

    Donc après un awk ou sed (ou cut ou tout autre commande ) on aura:

    # OPERATIONS du 11/05
    SITE 3
    traitement down

    # OPERATIONS du 12/05
    SITE 1
    traitement down
    SITE 3
    traitement down
    SITE 5
    traitement down


    Est-ce que quelqu'un pourrait m'aider ?
    Merci !

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 298
    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 298
    Points : 12 778
    Points
    12 778
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^SITE/{F=$0;next}/trait/{print F,"\n",$0;next}1'  fichier
    Cordialement.

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 252
    Points : 13 478
    Points
    13 478
    Par défaut
    Bonjour

    Sans la dernière virgule ;-)
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 298
    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 298
    Points : 12 778
    Points
    12 778
    Par défaut
    yep, exact...
    mais de toute façon, il y a au moins un cas qui ne fonctionne pas avec l'algo donné:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SITE 1
    FOOBAR
    traitement down
    Après son exemple ne contient pas ce cas...
    Cordialement.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 252
    Points : 13 478
    Points
    13 478
    Par défaut
    J'avais bien compris.
    Sinon, on peut prendre au pied de la lettre.
    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
    18
    19
    20
    $ cat fichier.txt 
    # OPERATIONS du 11/05
    SITE 1
    SITE 2
    SITE 3
    traitement down
     
    # OPERATIONS du 12/05
    SITE 1
    traitement down
    SITE 2
    SITE 3
    traitement down
    SITE 4
    SITE 5
    traitement down
     
    SITE 1
    FOOBAR
    traitement down
    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
    $ sed '/^SITE/{N;/\ntraitement down/!D}' fichier.txt 
    # OPERATIONS du 11/05
    SITE 3
    traitement down
     
    # OPERATIONS du 12/05
    SITE 1
    traitement down
    SITE 3
    traitement down
    SITE 5
    traitement down
     
    FOOBAR
    traitement down
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/04/2024, 08h36
  2. Réponses: 13
    Dernier message: 27/05/2015, 20h51
  3. Suppression de caracteres en fin de ligne avec awk ou sed
    Par julinho99 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 04/11/2008, 18h03
  4. suppression des lignes avec sed
    Par dngaya dans le forum Linux
    Réponses: 1
    Dernier message: 29/09/2008, 21h23
  5. [sed]Suppression de saut de ligne dans certains cas
    Par Anthony.Desvernois dans le forum Linux
    Réponses: 11
    Dernier message: 09/07/2007, 11h33

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