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 :

Tri sélectif en awk


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Tri sélectif en awk
    Bonjour,

    Comment faire pour afficher les 3 lignes qui suivent à chaque fois qu'on rencontre une phrase clé ?

  2. #2
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Bonjour,

    Le plus simple, c'est de le faire avec grep et sont connecteur -A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -A 3 motif fichier
    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    effectivement c'est efficace. Sauf les -- qui sont pas jolis. Je suppose que je m'en sors avec un grep ['alpha'] en deuxième passe.

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep --no-group-separator -A 3 motif fichier
    Cordialement.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    ah ben oui, terrible. Nickel, merci beaucoup !

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    On peut bien sûr aussi le faire avec awk, ce qui a l'avantage d'être portable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/motif/{i=4}i-->0' fichier
    ɹǝsn *sıɹɐlos*

  7. #7
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    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 266
    Points : 12 681
    Points
    12 681
    Par défaut
    J'aime bien cet uniligne awk.

    PS: petit détail, pour les 3 lignes suivantes faut que i=4.
    Cordialement.

  8. #8
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Oui, 4, bien sûr. C'est corrigé. Merci !
    ɹǝsn *sıɹɐlos*

  9. #9
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    et oui ça marche aussi, même si je ne comprends rien à cette syntaxe.

  10. #10
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Une version commentée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /motif/ {i=4} # si la ligne contient "motif", j'affecte la valeur 4 à la variable i. Dans tous les cas, je passe au test suivant
    i-- > 0       # si la variable i contient une valeur supérieure à zéro, j'effectue l'action par défaut qui est d'afficher la ligne courante. Dans tous les cas, je décrémente la valeur de i après avoir fait le test.
    ɹǝsn *sıɹɐlos*

  11. #11
    Futur Membre du Club
    Homme Profil pro
    autre
    Inscrit en
    Février 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Février 2016
    Messages : 14
    Points : 6
    Points
    6
    Par défaut
    d'accord, c'est plus clair effectivement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri sélectif dans combobox
    Par bvalenza dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2017, 13h50
  2. [XL-2007] Comparaison de colonnes et tri sélectif
    Par guyCnet dans le forum Excel
    Réponses: 1
    Dernier message: 16/08/2010, 21h15
  3. Tri sélectif sur deux datagridview indépendant
    Par jdelestre dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/06/2009, 17h28
  4. [Débutant] tri sélectif de matrices par rapport à un vecteur
    Par Lalaine dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/03/2009, 22h27
  5. Tri sélectif de nombres
    Par Sylvester dans le forum Langage
    Réponses: 11
    Dernier message: 21/06/2006, 16h30

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