Simplifier un grep

Résolu
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. Contributeur
    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
    1. Contributeur
      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. Modérateur
        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. Contributeur
        Et pourquoi pas un simple
        grep  -h  chaine  *.log' | xargs ll
        ?
        0
      3. Contributeur
        hello
        ne serait-ce pas -l plutot que -h ?
        0
      4. Modérateur
        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. Modérateur
        Juste pour info : le xargs a été utilisé plus de 15 fois aujourd'hui par différents technicien...
        Merci zipe31
        0