Forum Programmation.shell Imprimer les lignes avant et apres l'expression rechercher

Posté par  .
Étiquettes : aucune
0
30
août
2007
J'ai un fichier avec le format suivant :


Fichier : mon_fichier1
Begin : 2007-08-29
processed : 0
End : 2007-08-29
Fichier : mon_fichier2
Begin : 2007-08-29
processed : 4
End : 2007-08-29
Fichier : mon_fichier3
Begin : 2007-08-29
processed : 6
End : 2007-08-29
Fichier : mon_fichier4
Begin : 2007-08-29
processed : 0
End : 2007-08-29


Est ce qu'il y a une commande sous unix qui permet d'avoir en sortie tous les nom des fichiers avec : "processed : 0", c.a.d avoir comme sortie dans mon exemple :


Fichier : mon_fichier1
Begin : 2007-08-29
processed : 0
End : 2007-08-29
Fichier : mon_fichier4
Begin : 2007-08-29
processed : 0
End : 2007-08-29


Merci d'avance
  • # man grep

    Posté par  . Évalué à 1.

    OPTIONS
    -A NUM, --after-context=NUM
    Print NUM lines of trailing context after matching lines. Places a line containing -- between contiguous groups of matches.

    -B NUM, --before-context=NUM
    Print NUM lines of leading context before matching lines. Places a line containing -- between contiguous groups of matches.


    Soit un truc du genre :
    cat ton_fichier | grep -B2 -A1 'processed : 0' | grep -v '\-\-'
    • [^] # Re: man grep

      Posté par  . Évalué à 1.

      Oups ! J'avions pas vu qu'il y avait un doublon ousque c'était déjà répondu.
      Sorry.
    • [^] # Re: man grep

      Posté par  . Évalué à 1.

      cat ton_fichier | grep -nX expression


      ca numerote les lignes et affiche X lignes avant et apres l'expression
      • [^] # Re: man grep

        Posté par  . Évalué à 2.

        ARRETEZ AVEC CE CAT | GREP !!!!!
        • [^] # Re: man grep

          Posté par  . Évalué à 1.

          [mode énervé du matin ON]
          - demander aux gens d'arreter un "cat fichier | grep" c'est bien.
          - le faire sans crier c'est pas mal
          - proposer une autre solution et argumenter c'est encore mieux.
          [/mode énervé du matin OFF]

          effectivement on peut se passer de cat et faire directement
          grep -nX expression fichier1 fichier2


          ca marche aussi
          • [^] # Re: man grep

            Posté par  . Évalué à 1.

            Justement mon OS est : HP-UX et les optios : -B2 -A1 n'existent pas dans le grep
          • [^] # Re: man grep

            Posté par  . Évalué à 2.

            argumenté de nombreuses fois ici même.
            Ca ne sert qu'à lancer un processus inutilement, si tu multiplie ce genre de trucs dans une boucle, ca te génère des fork+exec inutiles. Puis pourquoi lancer un process qui ne sert à rien ?
        • [^] # Re: man grep

          Posté par  . Évalué à 1.

          Je préfère cette notation (cat | grep) car elle me parait plus consistante dans le cas d'enchainement / réutilisation de filtres.
          Je ne t'oblige pas à faire pareil.
          Et merci de ne pas crier.
    • [^] # Re: man grep

      Posté par  . Évalué à 1.

      Justement mon OS est : HP-UX et les options : -B2 -A1 n'existent pas dans le grep
      • [^] # Re: man grep

        Posté par  . Évalué à 1.

        Installe le grep GNU dans un coin, et tu auras ces options. Ça ne devrait pas coûter beaucoup plus cher en manip et ça t'évitera un orage de cerveau.
      • [^] # Re: man grep

        Posté par  . Évalué à 0.

        sinon meme sous HP-UX il doit exister un truc qui s'appelle man
        et man grep

        te donnera peut-etre l'option que tu cherches.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.