Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1058 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Imprimer les lignes avant et apres l'expression rechercher

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Imprimer les lignes avant et apres l'expression rechercher

n°1606544
demo2000
Posté le 30-08-2007 à 21:33:08  profilanswer
 

J'ai un fichier avec le format suivant :
 

Code :
  1. Fichier : mon_fichier1
  2. Begin : 2007-08-29
  3. processed  : 0
  4. End : 2007-08-29
  5. Fichier : mon_fichier2
  6. Begin : 2007-08-29
  7. processed : 4
  8. End : 2007-08-29
  9. Fichier : mon_fichier3
  10. Begin : 2007-08-29
  11. processed : 6
  12. End : 2007-08-29
  13. Fichier : mon_fichier4
  14. Begin : 2007-08-29
  15. processed : 0
  16. 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 :
 

Code :
  1. Fichier : mon_fichier1
  2. Begin : 2007-08-29
  3. processed  : 0
  4. End : 2007-08-29
  5. Fichier : mon_fichier4
  6. Begin : 2007-08-29
  7. processed : 0
  8. End : 2007-08-29


 
Merci d'avance
 
 

mood
Publicité
Posté le 30-08-2007 à 21:33:08  profilanswer
 

n°1606557
olivthill
Posté le 30-08-2007 à 22:26:35  profilanswer
 

C'est faisable avec un petit awk, qui ressemblera à ceci (non testé) :

awk 'BEGIN {
    memo_ligne_fichier = ""
    memo_begin = ""
     }
     {
       if ($0 == "processed : 0" ) {
          print memo_ligne_fichier
          print memo_begin
          print
       }
       else {
          if ($1 == "Fichier" ) {
             memo_ligne_fichier = $0
          }
          else {
             if ($1 == "Begin" ) {
                memo_begin = $0
             }
         }
       }
     } ' le_fichier_de_log.txt

n°1607133
aigles
Posté le 01-09-2007 à 19:02:17  profilanswer
 

Si tu as la version GNU de grep, tu peux aussi faire :

grep -B2 -A1 'processed : 0' input_file


 
Jean-Pierre.

n°1607156
Sve@r
Posté le 01-09-2007 à 21:40:49  profilanswer
 

demo2000 a écrit :

Est ce qu'il y a une commande sous unix qui permet d'avoir en sortie tous les nom des fichiers avec : "processed  : 0"


Comme tu le vois dans les réponses, t'as plein d'outils qui te permettent de créer le résultat attendu.
 
Ton truc est trop spécifique pour qu'une commande toute faite puisse faire ça. Mais Unix t'offre un tas d'outils de manipulation de fichiers qui te permettent, en les combinant comme il faut, d'atteindre n'importe quel résultat à partir de n'importe quelle donnée.
 
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1607198
demo2000
Posté le 02-09-2007 à 10:26:33  profilanswer
 

olivthill a écrit :

C'est faisable avec un petit awk, qui ressemblera à ceci (non testé) :

awk 'BEGIN {
    memo_ligne_fichier = ""
    memo_begin = ""
     }
     {
       if ($0 == "processed : 0" ) {
          print memo_ligne_fichier
          print memo_begin
          print
       }
       else {
          if ($1 == "Fichier" ) {
             memo_ligne_fichier = $0
          }
          else {
             if ($1 == "Begin" ) {
                memo_begin = $0
             }
         }
       }
     } ' le_fichier_de_log.txt



 
Merci olivthill ça marche  
 

aigles a écrit :

Si tu as la version GNU de grep, tu peux aussi faire :

grep -B2 -A1 'processed : 0' input_file


 
Jean-Pierre.


 
OS = HP-UX, les options B2 et A1 n'existent pas !
 
 

Sve@r a écrit :


Comme tu le vois dans les réponses, t'as plein d'outils qui te permettent de créer le résultat attendu.
 
Ton truc est trop spécifique pour qu'une commande toute faite puisse faire ça. Mais Unix t'offre un tas d'outils de manipulation de fichiers qui te permettent, en les combinant comme il faut, d'atteindre n'importe quel résultat à partir de n'importe quelle donnée.
 


 
Effectivement, je vais essayer de trouver une autre solution aved : sed
 
 
Merci encore
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Imprimer les lignes avant et apres l'expression rechercher

 

Sujets relatifs
Expression régulière pour moteur de recherche...help sur une expression régulière
Macro pour supprimer des lignes d'un tableau à partir de valeur[Php] Carte de membre imprimer: pistes?
résultat d'une requete dans fichier que si requete retourne des lignes[JS] Aide pour une petite expression régulière
[MySQL]Installation Drivers ODBC sous Vista en lignes de commandes[sql] somme d'un tableau sur les lignes
Expression régulière : j'y suis presque mais...expression régulière [nouveau problème]
Plus de sujets relatifs à : Imprimer les lignes avant et apres l'expression rechercher


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR