Simplifier un grep

Résolu
dna.factory Messages postés 19907 Date d'inscription   Statut Modérateur Dernière intervention   -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Une fois n'est pas coutume, j'ai la solution à mon problème...
Mais j'en suis pas satisfait, donc je voulais savoir si y'avait plus propre...

j'ai une erreur qui apparait à période régulière parmi une centaines de fichiers de logs NON horodatés.
Je veux savoir quand cette erreur se produit

aujourd'hui, j'utilise la boucle suivante :
for fichier in 'grep  -h  chaine  *.log';do ll $fichier;done
(les apostrophes sont inversés (alt+gr7), mais apparament, ça passe pas bien dans le message)
Qu'Est-ce que vous me proposez ?



Stop failing the turing test !

2 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    Je suppute que ton
    grep
    sort des chemins absolus de fichiers, puis que tu fais un affichage long avec un alias de
    ls -l
    histoire d'avoir la date (et éventuellement d'autres renseignements) des dits fichiers, exact ?

    Que voudrais-tu améliorer ?
    0
    1. dna.factory Messages postés 19907 Date d'inscription   Statut Modérateur Dernière intervention   1 621
       
      les chemins sont relatifs, mais en gros, c'est ça...
      L'idée, c'est de savoir si je peux me passer du for...
      Je suppose que je pourrais le faire avec un find, (doit y'avoir un paramètre pour chercher une chaine dans un fichier, et je peux faire un -exec ls -l (ll) pour avoir le chemin... mais c'est encore plus compliqué..
      L'idée en fait, c'est que de mon équipe, je suis le seul à 'maitriser' (un bien grand mot...) le for...
      Je voudrais que mon équipe puisse faire la même commande, mais je voudrais qu'ils comprennent.. et si je leur mets un for ou un find... ils feront du copier coller sans comprendre...
      0
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Et pourquoi pas un simple
      grep  -h  chaine  *.log' | xargs ll
      ?
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      hello
      ne serait-ce pas -l plutot que -h ?
      0
    4. dna.factory Messages postés 19907 Date d'inscription   Statut Modérateur Dernière intervention   1 621
       
      oups... oué...
      C'est presque bon, c'est juste que pour une raison étrange, le xargs ne gère pas l'alias...
      le
      grep -l chaine *.log' | xargs ll 
      me ressort
      xargs: ll: No such file or directory
      par contre, le
      grep -l chaine *.log' | xargs ls -l(arth)
      fonctionne

      Encore mieux... avec cette méthode le rt fonctionne bien, et les fichiers sont mis dans l'ordre..., plus besoin de faire un |sort en précisant la colonne (j'aurais du faire du maner pour retrouver comment faire).

      Merci zipe, c'est toi qui prends la tête, et si personne ne vient avec une réponse plus simple, c'est toi gagnera mon éternelle reconnaissance...
      0
    5. dna.factory Messages postés 19907 Date d'inscription   Statut Modérateur Dernière intervention   1 621
       
      Juste pour info : le xargs a été utilisé plus de 15 fois aujourd'hui par différents technicien...
      Merci zipe31
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    et avec
    tail -f *.log  | awk '{"date" | getline d; close("date"); print d, $0}'
    on affiche devant chaqe ligne, la date du message dans le fichier
    0